php – 调整注销功能来处理旅游后退按钮问题
发布时间:2020-12-13 13:59:59 所属栏目:PHP教程 来源:网络整理
导读:我有以下logout()函数,它适用于大多数浏览器,但不适用于safari.如果用户点击后退按钮,他们从缓存中获取上一页而不是登录屏幕,则Safari浏览器中的问题是退出之后.有没有办法调整退出功能来处理这个? function logout(){ // unset any session variables $_SE
我有以下logout()函数,它适用于大多数浏览器,但不适用于safari.如果用户点击后退按钮,他们从缓存中获取上一页而不是登录屏幕,则Safari浏览器中的问题是退出之后.有没有办法调整退出功能来处理这个?
function logout() { // unset any session variables $_SESSION = []; // expire cookie if (!empty($_COOKIE[session_name()])) { // setcookie(session_name(),"",time() - 42000); $params = session_get_cookie_params(); setcookie(session_name(),'',time() - 42000,$params["path"],$params["domain"],$params["secure"],$params["httponly"]); } // destroy session session_destroy(); }
在我看来,这是一个浏览器问题,而不是服务器问题.
>您是否尝试配置缓存头以禁止缓存已记录的页面? 你可以尝试这个解决方案,它基本上是把这个javascript放在你记录的页面中: window.onpageshow = function(event) { if (event.persisted) { window.location.reload() ; } }; 要仅在注销后重新加载页面,您可以检查是否没有cookie,这样后退按钮在登录时仍然可以工作.只需将“yourCookieName”字符串更改为会话cookie名称即可. function getCookie(cname) { var name = cname + "="; var ca = document.cookie.split(';'); for(var i=0; i<ca.length; i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1); if (c.indexOf(name) == 0) return c.substring(name.length,c.length); } return null; } function hasCookie(cname) { return getCookie(cname) !== null; } window.onpageshow = function(event) { if (event.persisted && !hasCookie("yourCookieName")) { window.location.reload(); // or redirect to login page } }; 注意:我认为缓存仍然存在于Safari中,解决方案2.所以,这并不是一个真正的解决方案正确的安全性在我看来. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |