Сессия PHP не уничтожает после пользовательского выхода из системы

Самый легкий способ проверить Вашу рабочую станцию состоит в том, чтобы загрузить Проверка Процессора VMware на 64-разрядный инструмент Compatibility от веб-сайта VMware.

Вы не можете выполнить 64-разрядную сессию VM на 32-разрядном процессоре. Однако можно выполнить 64-разрядную сессию VM, если Вы имеете 64-разрядный процессор, но установили 32-разрядный хост, ОС и Ваш процессор поддерживают правильные расширения. Инструмент, связанный выше, скажет, что Вы, если Ваш делаете.

6
задан Charles 23 December 2012 в 22:31
поделиться

6 ответов

Во-первых, убедитесь, что вы вызываете session_start (); , прежде чем вызывать session_destroy (); , потому что он выдаст предупреждение, только если вы не 't.

Кроме того, из PHP: session_destroy :

Чтобы полностью уничтожить сеанс, например, для выхода пользователя из системы, идентификатор сеанса также должен быть сброшен. Если файл cookie используется для распространения идентификатора сеанса (поведение по умолчанию), файл cookie сеанса должен быть удален. Для этого можно использовать setcookie ().
9
ответ дан 9 December 2019 в 20:45
поделиться

Также стоит отметить сеансы PHP, session_unset () > session_destroy () ; Не знаю почему. После прочтения записи PHP Manual в session_destroy () кажется, что удаляются только данные в текущем контексте, и на самом деле не очистить его из плоского файла сеанса, поэтому, если вы не очистили файл cookie, вы можете получить его обратно. Это кажется в высшей степени нелогичным (как часто бывает с PHP), и может быть причиной того, что несколько лет назад я решил (а затем сразу забыл об этой причине) всегда использовать session_unset () вместо session_destroy () .

Также убедитесь, что ваше перенаправление происходит после того, как вы проделали всю эту бессмысленную сессию, поскольку PHP действует способами, которых не ожидают все разработчики. Лучшая практика, ИМО, - следовать каждому заголовку ('Location: ...'); вызов с помощью кубика;

2
ответ дан 9 December 2019 в 20:45
поделиться

Я бы проверил, что отправляет браузер на сервер с помощью Fiddler, а также проверил, какую информацию вы сохранили в своем сеансе. Save_path

0
ответ дан 9 December 2019 в 20:45
поделиться

однако, когда я возвращаюсь на страницу index.php

Разве конкретная страница не была просто запрошена из кеша браузера? Выполните резкое обновление страницы ( CTRL + F5 в большинстве веб-браузеров).

Если это окажется причиной, и вы хотите отключить кеширование запросов, добавьте следующий набор заголовков в HTML ваша страница:

<meta http-equiv="cache-control" content="no-cache,no-store,must-revalidate">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="expires" content="0">

или в коде PHP с использованием функции PHP header () :

header('cache-control: no-cache,no-store,must-revalidate'); // HTTP 1.1.
header('pragma: no-cache'); // HTTP 1.0.
header('expires: 0'); // Proxies.

Не забудьте очистить кеш браузера перед тестированием:)

0
ответ дан 9 December 2019 в 20:45
поделиться

Вы уверены, что страница не cached?

Записать поверх токена аутентификации:

session_start();
$_SESSION['varName'] = null;
$_SESSION = array();
session_destroy();
0
ответ дан 9 December 2019 в 20:45
поделиться

Если вы используете только SESSEST_UNSET (), а затем Buggy IE все еще сохраняет данные, чтобы мое предложение было использовать оба.

1
ответ дан 9 December 2019 в 20:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: