Проблемы с сессиями PHP в Chrome - PullRequest
0 голосов
/ 14 декабря 2011

У меня есть веб-приложение, которое я разрабатываю для школьного проекта, у меня проблемы со страницей выхода из системы.Когда пользователь нажимает кнопку выхода из системы, он отправляет их в logout.php, который выглядит следующим образом:

<?php include ("includes/check_authorization.php");
    // Unset the session and destroy it
    session_unset();
    session_destroy();

    // Redirect to the home page
    echo '<META HTTP-EQUIV="Refresh" Content="0; URL=index.php">';
    exit;
?>

Это очень просто, но он будет сброшен, затем уничтожит сеанс и перенаправит на индекскоторая является страницей входа.Однако, когда это выполняется, индекс сразу же перенаправляется на домашнюю страницу пользователя.Страница check_authorization, включенная вверху, перенаправит кого-либо для входа в систему, если имя пользователя и идентификатор не установлены и не совпадают в $ _SESSION, так что это значит, что он устанавливает их для меня?Я действительно смущен тем, как это происходит.Я использую CAS для аутентификации.

РЕДАКТИРОВАТЬ: check_authorization.php также инициализирует сеанс и проверяет значения этих ключей

Ответы [ 3 ]

1 голос
/ 14 декабря 2011

Для такой ситуации я сделал следующее: у меня работают все браузеры,

@session_unset();
$old_sessid = @session_id();
@session_regenerate_id();
$new_sessid = session_id();
@session_id($old_sessid);
@session_destroy();
0 голосов
/ 14 декабря 2011

Есть несколько возможностей:

  • Самая простая возможность: вы включили

    session_start ();

поверх файла?прежде чем включить файл?Я был там раньше, и это меня бесило.

  • Вторая возможность: попытаться поставить

    session_regenerate_id ();

в самом верху вашего файла (до того, как вы объявите session_start ();).Потому что в некоторых серверных хостингах их конфигурация все еще использует стиль «LINUX», что я не могу вам здесь объяснить.Но дело в том, что они всегда используют «кеш» при перенаправлении.Другими словами, вы всегда перенаправляете на свою «кэшированную» страницу, когда перенаправляете на другую страницу.Видите .. здесь вам сложно объяснить.Но просто попробуйте session_regenerate_id ();код, может быть, это будет работать.

  • Я никогда не использую "эхо" вещи при выполнении перенаправления вещей.Попробуйте:

    header ("location: index.php");я не знаю, работает ли это или нет.Я просто даю вам свой анализ, основанный на моих предположениях.

Надеюсь, что это полезно.:)

0 голосов
/ 14 декабря 2011

Вместо того, чтобы просто сбрасывать данные, попробуйте назначить фиктивное значение сеансу, например:

$_SESSION['authKey'] = '!!INVALID!!';
session_unset();
session_destroy();

Даже если сеанс «оживает», аутентификация больше не может быть успешной из-заподдельные "данные.

...