IE8 использует только первый сеанс cookie - PullRequest
0 голосов
/ 31 января 2012

Некоторая справочная информация о проблеме:

Мой домен находится в следующем формате: http://example.com/
Размещено на: Общий хостинг.
Защищенный режим: Выкл.
Приложение страдает с: IE8.
Приложение не страдает с: Chrome или FireFox.

Я вхожу в приложение со следующим:

function login(){
    session_regenerate_id();
    $_SESSION['thumbprint']=nonce(session_id().'thumbprint',86400);
}


function nonce($str,$expires){
    global $config;
    return sha1(date('Y-m-d H:i',ceil(time()/$expires)*$expires).$salt.$str);
}

После входа в систему я выхожу с:

function logout(){
    session_unset();
    session_destroy();
    header("Location: http://example.com");
    die();
}

Проблема: Если я вхожу в систему и выхожу из системы, в любое другое время, когда я пытаюсь войти в систему, сеанс не запускается. Почему это?

1 Ответ

1 голос
/ 31 января 2012

у меня изначально было:

session_regenerate_id();

Но это не сработает, потому что согласно руководству по PHP:

"session_regenerate_id () заменит текущий идентификатор сеанса новым и сохранит информацию о текущем сеансе."
http://php.net/manual/en/function.session-regenerate-id.php

И потому, что IE8:

"использует первый набор файлов cookie сеанса, а не последний, как в Firefox."
http://anvilstudios.co.za/blog/php/session-cookies-faulty-in-ie8/

Чтобы решить эту проблему, все что вам нужно сделать, это установить:

session_regenerate_id(true);

Что удаляет старый идентификатор сессии и вынуждает IE8 использовать новый.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...