【问题标题】:PHP session variables and GET requestPHP 会话变量和 GET 请求
【发布时间】:2012-06-29 02:30:51
【问题描述】:

美好的一天,

我正在创建一个名为“index.html”的用户登录网页,当用户从“index.html”提交表单时,它会将数据发布到“home.php”站点。现在我在“home.php”中,我可以检索发布的变量,对照数据库检查它们并对用户进行身份验证。一旦进入“home.php”文件,我希望用户向“home.php”站点发出 GET 请求以显示不同的数据。有没有办法做到这一点并保持身份验证?

现在我收到一条通知说 POST 变量未定义。 (显然,因为我没有发布任何东西)

Notice: Undefined index: pass in C:\xampp\htdocs\home.php on line 7

谢谢, 马特

【问题讨论】:

  • 您是否尝试在您的代码中获取 $_POST['pass'] ?这是一个 E_STRICT 错误(我认为它现在是 E_STRICT 类)。如果你真的想要,你可以降低你的错误报告
  • 错误消息不是他的问题——如果我理解正确的话,他无法访问变量的事实是。
  • 这是更大的问题,理解...

标签: php html session post get


【解决方案1】:

【讨论】:

    【解决方案2】:

    一旦您执行初始身份验证检查,即表单提交和帐户验证,您应该为用户分配某种形式的会话令牌。这是一个您可以验证其真实性的令牌,用于对后续请求进行速记验证。您可以通过以下几种方式创建此令牌:

    1. 创建一个简单的表来跟踪授权会话令牌及其到期日期。这可确保只允许您创建的会话、绑定到单个帐户并有保证的到期日期。
    2. 创建一个加密令牌格式,以便会话令牌实际上是一个加密数据容器,您只能在服务器端使用私有的旋转密钥读取它。令牌将包含有关用户和过期的信息,并且无需服务器端表。

    除了每个令牌的基本信息之外,最好包含对初始身份验证请求的 UserAgent 和 IPAddress 的引用,这样您就可以确保没有发生会话劫持。

    创建令牌后,您需要将其存储在交叉请求位置;它可以是会话或 cookie 变量。这主要是一种偏好,但无论哪种方式,您都应该确保它只能从 HTTP 请求而不是 JS 请求访问,以防止 XSS(跨站点脚本)。查看这些关于会话和 cookie 的文章:

    现在您有了一个可以在站点的任何位置使用的令牌,您需要为每个页面创建一个身份验证处理程序,以检查此令牌并验证它是否有效。一旦您确认它是真实的,您就可以使用它来确定哪个用户正在查看该页面以及他们应该拥有哪些权限。

    【讨论】:

      【解决方案3】:

      这样做

      $pass = isset($_POST['pass']) ? $_POST['pass'] : null;
      

      【讨论】:

        【解决方案4】:

        例如,您可以这样做:

        echo "<form method='post' action='home.php?parameter1=".$variable1."'>";
        

        那么你就有了 POST 和 GET 变量。

        编辑:但我想我误解了你,使用 SESSION 变量通过页面保持身份验证。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-02-09
          • 2012-04-30
          • 1970-01-01
          • 2020-07-01
          • 1970-01-01
          • 2013-06-18
          相关资源
          最近更新 更多