PHP会话ID会更改每个请求

时间:2015-06-23 22:36:19

标签: php session

我知道有很多类似的问题,而且我花了好几天时间试图查找解决方案,但仍然无法解决问题,所以我在这里。 似乎会话ID在每个请求(页面之间,每次刷新等)上都会发生变化。会话变量似乎没有持续到下一页,因此我尝试获取会话ID(尝试打印并在FF上使用Live HTTP Headers附加组件),每次都不同。

问题是,它在大约一年前我暂时放弃了这个项目,但当我试图回到它时,它已经不再适用了。我甚至尝试创建一个非常简单的页面,只打印上一页设置的会话变量,但仍然没有运气。我确保在session_start()之前没有打印任何内容,检查session.save_path中存储的路径的权限,但无法确定为什么它仍在每个请求上生成新的会话ID。我怀疑配置的东西,但不能把它放在可能的东西上。

以下是我用于测试的简单页面:

的index.php:

<?php
session_start(); 

  $_SESSION['hello'] = "TESTING";

?>
<!DOCTYPE html>
<html>
<head>
  <title>Testing</title>
</head>
<body>
  Hello!
  <a href="testing.php">click me</a>
</body>
</html>

testing.php:

<?php
session_start();

echo session_id();
print "\nHello, ";
print $_SESSION['hello'];
?>

这就是我在Live HTTP Headers上看到的内容:

Set-Cookie: PHPSESSID=some_id; path=/; domain=.DOMAIN.EXT
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

我发现Cookie会立即过期 - 可能就是这样吗?如果是,我需要做些什么才能解决这个问题?

我遗失了什么?

1 个答案:

答案 0 :(得分:0)

尝试将它放在session_start之前?

ini_set('session.gc_maxlifetime', 30*60); // expires in 30 minutes