我们的用户身份验证系统使用Cookie和$ _SESSION变量来确定登录状态。每个页面都测试是否存在user_id $ _SESSION变量和user_auth cookie:
if(!isset($_SESSION['user_id']) || !isset($_COOKIE['user_auth'])){
// send user through login
}
如果找不到,则发送用户完成登录过程。注销按钮加载以下页面:
<?php
session_start();
setcookie('user_auth','',time()-360000,'/','domain.com');
session_unset();
session_destroy();
header("location: http://home.domain.com");
?>
在Firefox中,注销然后按后退按钮会通过登录过程将用户返回。但是,在IE6中,这些值将被保留,用户可以再次访问该页面。这些值肯定会被破坏,因为重新加载页面会使用户通过登录过程返回,但我显然更喜欢IE6将用户直接发送回登录,就像Firefox一样。我尝试过使用no-cache和revalidate标头,但无济于事。
(在建议之前,使用Firefox / Safari / Chrome / IE8不是一个可用的选项。)
答案 0 :(得分:0)
它没有缓存cookie值,而是缓存页面本身。如果您不想这样做,可以使用标题来禁用缓存。
根据您的内容,您可能还希望在注销消息页面上拥有通常的“请清除缓存并关闭窗口”。
答案 1 :(得分:0)
您还可以在if / else集中测试代理类型,并根据浏览器类型对注销执行不同的操作。和IE 6一样,我认为你可以完全取消会话并完全退出()处理:unset($ _ SESSION ['variable']); ..
我相信这也是一个标题控件,你可以在IE6中运行,如 Response.CacheControl =“no-cache” ..不确定这根本不是帮助或回答你的问题,但肯定是控制这种情况的一种方法。祝你好运!
答案 2 :(得分:0)