维护多个页面的会话

Aya*_*Aya 1 php

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

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

提前致谢.

Mar*_*c B 10

该教程教你以高度不安全的方式做事.将这种认证数据存储在cookie中是非常糟糕的,特别是使用诸如"用户名"和"密码"之类的非常明显的名称.

使用常规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>
Run Code Online (Sandbox Code Playgroud)

除非你是在一个严重错误配置的PHP或者石器时代的PHP版本上运行,否则远程用户无法以某种方式设置'loggedin'标志而不首先通过你的代码.