维护多个页面的会话

时间:2010-10-18 21:10:23

标签: php

我在设计一种跨多个页面维护cookie会话的方法时遇到了麻烦。我正在做一些与此tutorial非常相似的事情。我从启动页面检查密码和用户名,如果它是正确的,那么我设置一个cookie并用哈希填充它。之后,我将用户转移到另一个页面。如果用户名/密码不正确,那么它只是重定向回启动页面。

我无法弄清楚的主要问题是如何跨多个页面检查cookie的有效性。正如教程所示,我在PHP中这样做。我想将哈希发布到新页面是不正确的,但在加载页面之前,我想不出任何其他方法来检查会话/用户的有效性。

提前致谢。

1 个答案:

答案 0 :(得分:10)

该教程教你以高度不安全的方式做事。将这种认证数据存储在cookie中是非常糟糕的,特别是使用“username”和“password”等非常明显的名称。

使用常规PHP会话更好(并且比“教程”教导的更安全)。 PHP将负责为您设置会话cookie,您所做的就是将您的身份验证数据存储在会话中。除非您自己执行此操作,否则不会将该数据发送给用户。唯一可以来回的是会话cookie,它是一串随机垃圾,“唯一地”标识PHP的用户。

一旦你完成了那部分,你就会在所有需要登录页面的顶部放一个小片段,看起来像这样:

<?php

session_start()
if ($_SESSION['loggedin'] !== TRUE) {
   header("Location: http://example.com/login.php");
   echo 'You must log in first';
   exit();
}
?>
<h1>Welcome back, <?php echo $_SESSION['username'] ?></h1>

除非您运行的是错误配置错误的PHP,或者是石器时代的PHP版本,否则远程用户无法以某种方式设置“loggedin”标记而无需先通过代码。

相关问题