首页  >  问答  >  正文

防止用户退出后返回

<p>我不希望用户在注销后通过单击后退按钮返回到受保护的页面。在我的注销代码中,我取消设置会话并重定向到登录页面。但是,我认为浏览器正在缓存该页面,因此尽管会话因注销而被破坏,但它仍然可见。</p> <p>我可以通过不允许浏览器缓存来避免这种情况</p> <p><code>header("缓存控制", "无缓存,无存储,必须重新验证")</code></p> <p>但这样我就失去了浏览器缓存的优势。</p> <p>请提出一个更好的方法来实现这一目标。我觉得,一定有一种方法可以通过 javascript 客户端来处理这个问题</p>
P粉029327711P粉029327711419 天前497

全部回复(2)我来回复

  • P粉805931281

    P粉8059312812023-08-28 18:26:27

    我也遇到了同样的问题,花了一整天的时间来解决它, 最后修正如下:

    在登录验证脚本中,如果用户经过身份验证,则设置一个会话值,例如如下所示:

    $_SESSION['status']="Active";

    然后在用户配置文件脚本中放入以下代码片段:

    以上代码的作用是,只有且仅当 $_SESSION['status'] 设置为 "Active" 时,才会转到用户个人资料,并且仅当用户经过身份验证时,此会话密钥才会设置为“Active”... [注意否定 [' ! '] 在上面的代码片段中]

    注销代码大概应该如下:

    {
        session_start();
        session_destroy();
        $_SESSION = array();
        header("location:login.php");
    }

    希望这有帮助......!!!

    回复
    0
  • P粉613735289

    P粉6137352892023-08-28 11:20:58

    在 PHP 中实现此功能,而不是在 javascript 中。

    在每个页面的顶部,检查用户是否已登录。如果没有,他们应该被重定向到登录页面:

    正如您所提到的,注销时,只需取消设置logging_in会话变量,然后销毁会话:

    如果用户现在点击返回,则没有logged_in会话变量可用,并且页面将不会加载。

    回复
    0
  • 取消回复