【问题标题】:Prevent user from seeing pages that require a session阻止用户查看需要会话的页面
【发布时间】:2013-04-12 15:17:26
【问题描述】:

我有一个登录页面,然后我创建了一个指向名为 logout 的页面的链接,它包含以下代码:

注销.php

<?php

session_unset();
session_destroy();
header("Location:");

?>

然而,当我注销然后点击后退按钮时,它会将我带回来。如何更改它,使其在显示上一页之前要求您再次登录?

【问题讨论】:

  • 确保浏览器不缓存页面。
  • 我不知道该怎么做,你能发帖告诉我吗?
  • 这就是浏览器的工作方式,当您点击返回按钮时页面不会重新加载。例如,我将发布此评论,单击指向另一个问题的链接,然后按回。我不会看到我的评论。
  • 使用header() 指定Expires:Cache-Control:Pragma:Example.

标签: php


【解决方案1】:

在您要返回的页面(或与此相关的任何页面)上,您需要检查用户是否已登录(即具有有效会话),如果没有,请将其重定向到登录页面。

此外,向这段特定的代码添加一些无缓存标头可能对您有所帮助。

【讨论】:

    【解决方案2】:

    您尚未设置任何要重定向到的位置。

    应该是:

     header("Location:http://example.com/login.php");
    

    这样当你注销时,它会将浏览器重定向到 login.php。

    编辑:

    此外,向您的主页添加会话验证条件也会有所帮助。

    类似:

     if(!isset($_SESSION))
     {
         header("Location:http://example.com/login.php");
     }
    

    【讨论】:

    • 好的。请记住@Script47,当您在浏览器中回击时,您正在访问页面的缓存版本。
    • 如果浏览器打开缓存版本可能无法正常工作。但是你可以避免这种情况,如果你也在你的代码中添加一些no cache headers
    • 在标头重定向中应该使用完整的 URL,而不是相对路径。
    【解决方案3】:

    在加载每个页面(或至少每个 PRIVATE/RESERVED 页面)之前,您应该检查 $_SESSION 变量以确定用户是否合法登录。

    如果您不执行此检查,那么每个人都可以访问您网站的每个页面,前提是他们拥有指向该网站的直接链接。他们可能会看到页面的损坏版本,但仍然授予未登录用户访问权限。

    【讨论】:

      【解决方案4】:
      <?php
          session_start();
          session_unset();
          session_destroy();
          session_write_close();
          setcookie(session_name(),'',0,'/');
          session_regenerate_id(true);
      ?>
      

      来源:Manual

      【讨论】:

        【解决方案5】:

        如果用户已登录,请尝试检查每个页面

        if (!$_SESSION['logged_in']) { //you would have to make $_SESSION['logged_in'] when they login
        header('location: login.php');
        }
        

        所有这一切都是说如果 $_SESSION['logged_in'] 未设置将它们重定向到登录页面。

        您还需要进行其他检查以确保其安全。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-02-19
          • 1970-01-01
          • 1970-01-01
          • 2010-09-17
          • 1970-01-01
          • 1970-01-01
          • 2021-06-08
          相关资源
          最近更新 更多