我做了一个简单的注册页面,当用户的信息被验证时,就在重定向之前,他们的会话ID根据我设置的令牌系统进行了更改。在注册页面上,id是正确的,我也有一个我手动设置的变量UID。虽然问题是在下一页上,id是不同的,并且变量是未定义的。
$_SESSION['UID'] = $id;
session_id($sessID);
session_write_close();
header("Location: /website/landing.php");
exit();
启用Cookie,Sessions有一个目录“C:/ xampp / tmp”并写入,我从注册页面看到具有正确ID的文件。这是在localhost上运行的,它是一个https连接。我已按照我所说的方式设置了所有内容(通过许多其他stackoverflow答案)应该是,但是在下一页:
<?php
session_start();
echo session_id()."\n";
echo $_SESSION['UID'];
session_unset();
session_destroy();
?>
<!DOCTYPE html>
<html>
<head>
<title>Logged in</title>
</head>
<body>
<h1>Congratulations, you have successfully logged in!</h1>
<a href="logout.php" title="">Log Out</a>
</body>
</html>
这里当我回显会话ID时,它是一个新的,每次都保持不变,除非我从Firefox设置中删除它,但即使这样,新的也不是我想要的用户特定的。
这是什么原因?我觉得它与重定向有关。
答案 0 :(得分:3)
删除行:
session_unset();
session_destroy();
因为它们会在每个页面加载时销毁会话。从而导致新的会话。
我建议您查看session_destroy()
的文档,了解与注销相关的其他操作。