注销后Facebook和Google如何处理后退按钮?

时间:2017-01-05 04:44:25

标签: javascript php facebook back user-experience

我正在使用codeigniter 中的 php项目。当用户退出时,他/她被引导到登录页面。但是当他/她点击浏览器的后退按钮时,他/她会在注销之前看到主页,这绝对不是一件好事。 我已经在每个页面上添加了会话检查,以便当用户在注销后重新加载任何页面时,他/她将被定向到登录页面。 据我所知,这是因为网页浏览器使用后台按钮缓存。所以在许多堆栈溢出论坛和其他人提供的一个解决方案是清除缓存,我也这样做。但另一个问题是文档在后退按钮后到期,从UX的角度来看这并不好。 另一种解决方案是添加javascript代码以在按下后退按钮时将页面限制为自身,这肯定有效。但由于 javascript是客户端,如果您从浏览器禁用它,这将无效。 如果你检查Gmail或Facebook或任何一个好的网站,他们处理得非常好,不是,这不仅仅是javascript代码,正如本论坛How Google deals with the Back Button after logout?中所建议的那样, 所以我的问题是他们如何处理它?<​​/ p>

2 个答案:

答案 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; ?>');
    });

这是我的经验知识......谢谢