$ _SESSION变量和id不会在localhost上的页面之间转移

时间:2015-08-07 18:53:50

标签: php session

我做了一个简单的注册页面,当用户的信息被验证时,就在重定向之前,他们的会话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设置中删除它,但即使这样,新的也不是我想要的用户特定的。

这是什么原因?我觉得它与重定向有关。

1 个答案:

答案 0 :(得分:3)

删除行:

session_unset();
session_destroy();

因为它们会在每个页面加载时销毁会话。从而导致新的会话。

我建议您查看session_destroy()的文档,了解与注销相关的其他操作。