У меня есть страница logout.php, которая заканчивает сеанс пользователя и работает хорошо и делает следующее:
session_start (); session_unset (); session_destroy ();
Я только что заметил при тестировании с Safari, что при выходе из системы вы можете нажать кнопку «Назад», чтобы вернуться на предыдущую страницу, для которой требуется аутентификация, но не запрашивается. Вы не можете перейти от этой страницы без ввода навигации, но она не должна отображать предыдущую страницу в первую очередь.
Пока что в моем тестировании это только проблема с Safari в Mac OS X, и есть ряд других отчетов об этом, но без разрешения, которое я мог бы найти:
http://www.experts-exchange.com/Web_Development/Web_Languages-Standards/PHP/Q_23702691.html
Мне бы очень хотелось, чтобы вы могли отключить это поведение с помощью кнопки возврата Safari – удивлялись, что это происходит в первую очередь.
Спасибо, Стив
Убедитесь, что любая страница, для которой вы выполняете аутентификацию, отправляется с соответствующими заголовками управления кешем. Страница отображается в кеше браузера, предоставляя управление кешем, которое явно запрещает кеширование, вы должны быть в состоянии остановить это.
С http://php.net/manual/en/function.header.php
<?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 ?>
В частности, для Safari существует некоторое обсуждение кешей и выгрузок событий, которые вы могли бы использовать, чтобы избежать кеширования. Похоже, что WebKit действительно имеет некоторые сложности с кешированием в целом.
http://webkit.org/blog/427/webkit-page-cache-i-the-basics/
http://webkit.org/blog/516/webkit-page-cache-ii-the-unload-event/
Я обнаружил, что этот ответ « Предотвращение кеша на задней панели в Safari 5» работает.