我正在使用codeigniter 中的 php项目。当用户退出时,他/她被引导到登录页面。但是当他/她点击浏览器的后退按钮时,他/她会在注销之前看到主页,这绝对不是一件好事。 我已经在每个页面上添加了会话检查,以便当用户在注销后重新加载任何页面时,他/她将被定向到登录页面。 据我所知,这是因为网页浏览器使用后台按钮缓存。所以在许多堆栈溢出论坛和其他人提供的一个解决方案是清除缓存,我也这样做。但另一个问题是文档在后退按钮后到期,从UX的角度来看这并不好。 另一种解决方案是添加javascript代码以在按下后退按钮时将页面限制为自身,这肯定有效。但由于 javascript是客户端,如果您从浏览器禁用它,这将无效。 如果你检查Gmail或Facebook或任何一个好的网站,他们处理得非常好,不是,这不仅仅是javascript代码,正如本论坛How Google deals with the Back Button after logout?中所建议的那样, 所以我的问题是他们如何处理它?</ p>
答案 0 :(得分:0)
在主页上,您需要检查SESSION是否处于活动状态。 当用户注销时,您需要销毁SESSION。
例如: - 在主页
session_start();
if(!isset($_SESSION['variableName']))
{
header("location:login.php");
}
在退出页面上:
session_start();
session_destroy();
希望这有帮助。
答案 1 :(得分:-2)
有一次我遇到了这个问题,最后我得到了许多微小的解决方案。
将noscript标记放在公共头文件中。当JS关闭时,我返回一个文本。
<noscript>Your browser does not support JavaScript!</noscript>
检查每个层级上是否记录的用户的另一种方法
setInterval(function(){
$("#autorefresh").load("checklogin.php?screenName=autorefresh");
}, 5000);
最后把这个放回来防止js history.pushState(null,null,&#39; loginController.php?time =
$currentDateTime; ?>');
window.addEventListener('popstate', function(event) {
history.pushState(null, null, 'loginController.php?time=<?php echo $currentDateTime; ?>');
});
这是我的经验知识......谢谢