Как правильно выйти из системы (PHP) - PullRequest
0 голосов
/ 06 марта 2011

Когда я нажимаю кнопку входа в систему, он удаляет перенаправления куки на главную страницу. Работает отлично.

Но когда я нажимаю кнопку «назад» (или клавишу возврата), страница входа все равно появляется. Я хочу предотвратить это по соображениям конфиденциальности пользователей.

Как бы вы это сделали?

Ответы [ 6 ]

1 голос
/ 06 марта 2011

См. Этот вопрос / ответ:

(PHP) Как правильно уничтожить cookie сессии?

А также этот вопрос по управлению кешем:

Как использовать заголовки кеша HTTP с PHP

По сути, вам необходимо убедиться, что вы правильно уничтожаете сеанс PHP и отправляете надлежащие инструкции по кешированию в браузер (по существу,, не для кеширования).

Обратите внимание, что ответ на вопрос, который я связал, гласит, что если вы уничтожите сеанс на сервере, сам файл cookie будет бесполезен.Не полагайтесь на удаление куки для завершения сеанса.

0 голосов
/ 06 марта 2011

Конечно, если пользователь нажал клавишу Backspace после выхода из системы, он на самом деле ничего не мог сделать, просто просматривал страницу, как если бы он вошел в систему. Все запросы и т. Д. Не будут выполнены.

В качестве альтернативы,Вы можете сделать так, чтобы ваш logout.php перенаправлял на страницу «До скорой встречи» или на аналогичную страницу, где нажатие назад сохранит их выход из системы.

РЕДАКТИРОВАТЬ: ТАКЖЕ, если другой пользователь зашел в браузер и снова открыл страницу,пользователь не будет отображаться раньше.

0 голосов
/ 06 марта 2011

Это похоже на проблему кеширования.Сконфигурируйте ваше приложение для отправки заголовков анти-кэширования в браузер, чтобы предотвратить кэширование ваших страниц в памяти браузера.

header("Cache-Control: no-cache"); 
header("Pragma: no-cache"); 
header("Expires: 0");
0 голосов
/ 06 марта 2011

Возможно, дело в браузере, а не в вашем коде. Вы можете попытаться остановить кеширование страницы браузером, используя -

<meta http-equiv="pragma" content="no-cache" />
0 голосов
/ 06 марта 2011

Вы можете использовать Expires header (php использует его с сессией). Если вы отправите что-то, что linke истекает в 1970 , браузеры не будут кэшировать страницу, вместо этого они перезагрузят ее, когда кто-то использует функцию истории.

Из руководства по PHP:

header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past

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

0 голосов
/ 06 марта 2011

Конечно, будет. Обновив страницу, вы обнаружите, что файл cookie не был сброшен.

Вы уверены, что правильно отключили переменные сеанса PHP?

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