我遇到与浏览器缓存一个(显然是常见的)问题,我的安全网页是通过后退按钮访问(用户注销后)。停止公开安全页面的后退按钮?
这里是我的logout.php
<?php
// 1. Find the session
session_start();
// 2. Unset all the session variables
$_SESSION = array();
// 3. Destroy the session cookie
if(isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time()-42000, '/');
}
// 4. Destroy the session
session_destroy();
redirect_to('index.php?logout=1');
?>
这在IE7,IE8,Chrome和Firefox上成功注销用户 - 但在Safari中,我可以按下后退按钮(在注销后立即)并仍然可以看到安全内容。如果我刷新安全页面,它引导我到登录界面(因为它应该。)
你可以自己尝试一下@http://labs.inversepenguin.com(用户:堆栈&通:溢出)
我已经尝试使用:
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
...但它没有效果。任何人都可以提供建议吗?我发现this article在浏览器缓存,但我还没有发现在它的答案...虽然我没有找到:“问题”
<?php
Header("Cache-Control: must-revalidate");
$offset = 60 * 60 * 24 * 3;
$ExpStr = "Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT";
Header($ExpStr);
?>
...这也不能解决嗯。
浏览器可以自由缓存数据,并在用户按下“后退”按钮后显示。这可能是这里发生的事情,对此你没有太多的办法。 – You 2011-02-11 00:43:53
相关:http:// stackoverflow。com/questions/64059/is-a-way-to-keep-a-page-from-rendering-once-a-person-has-logged-out-but-hit – 2011-02-11 00:47:35
一旦内容被传递,已不再安全。 – 2011-02-11 00:49:47