我有一个logout.php页面,它结束了用户的会话并运行良好并执行以下操作:
在session_start(); session_unset(); session_destroy();
我刚注意到在使用Safari进行测试时,当您注销时,可以单击后退按钮返回上一页,该页面需要进行身份验证,但不会提示。如果不输入导航,您就无法离开此页面,但它不应该首先显示上一页。
到目前为止,在我的测试中,这只是Mac OS X上Safari的一个问题,还有很多关于此问题的其他报告,但我找不到解决方案:
http://www.experts-exchange.com/Web_Development/Web_Languages-Standards/PHP/Q_23702691.html
我希望能够通过Safari的后退按钮禁用此行为 - 首先发生这种情况感到惊讶。
谢谢, 史蒂夫
答案 0 :(得分:2)
确保您提供的任何需要身份验证的页面都使用合适的缓存控制标头发送。该页面正在从浏览器缓存中显示,通过提供明确禁止缓存的缓存控制,您应该能够停止此操作。
来自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 :(得分:1)