$_SESSION变量和id不会在本地主机上的页面之间传递


$_SESSION variables and id do not carry over between pages on localhost

我创建了一个简单的注册页面,当用户的信息被验证时,就在重定向之前,他们的会话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相关的其他操作。