0

再会,

我正在创建一个用户登录名为“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

谢谢,马特

4

4 回答 4

2

听起来您想使用会话。


见:http ://www.w3schools.com/php/php_sessions.asp

见:http ://www.tizag.com/phpT/phpsessions.php

于 2012-06-27T15:37:29.043 回答
2

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

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

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

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

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

于 2012-06-27T15:54:27.043 回答
1

做这个

$pass = isset($_POST['pass']) ? $_POST['pass'] : null;
于 2012-06-27T15:37:21.600 回答
1

例如,您可以这样做:

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

然后你有 POST 和 GET 变量。

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

于 2012-06-27T15:39:31.160 回答