Кнопка Назад в Safari не поддерживает сеанс выхода из PHP - PullRequest
3 голосов
/ 09 июня 2010

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

session_start (); session_unset (); session_destroy ();

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

До сих пор в моем тестировании это была только проблема с Safari на Mac OS X, и есть ряд других сообщений об этом, но без разрешения, которое я мог бы найти:

http://www.experts -exchange.com / Web_Development / Web_Languages-стандарты / PHP / Q_23702691.html

Я хотел бы иметь возможность отключить это поведение с помощью кнопки возврата Safari - удивлен, что это происходит в первую очередь.

Спасибо, Стив

Ответы [ 2 ]

2 голосов
/ 09 июня 2010

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

С 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/

1 голос
/ 20 апреля 2011

Я обнаружил, что этот ответ Предотвращение кэширования на кнопке возврата в Safari 5 работает.

...