我创建了一个简单的注册页面,当用户的信息被验证时,就在重定向之前,他们的会话id根据我设置的令牌系统进行更改。在注册页面上,id是正确的,并且我还有一个手动设置的变量UID。虽然问题是在下一页,id是不同的,变量是未定义的
$_SESSION['UID'] = $id;
session_id($sessID);
session_write_close();
header("Location: /website/landing.php");
exit();
Cookies被启用,会话有一个目录"C:/xampp/tmp",它被写入,我从那里的注册页面看到具有正确id的文件。这是在本地主机上运行的,它是一个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时,它是一个新的会话id,它每次保持不变,除非我从Firefox设置中删除它,但即使这样,新的会话id也不是我想要的用户特定的会话id。
这是什么原因?我觉得这和重定向有关
删除行:
session_unset();
session_destroy();
因为它们在每次页面加载时都会破坏会话。从而导致一个新的会话。
我建议查看session_destroy()
的文档,了解与logout相关的其他操作。