PHP会话变量不跨页面传递

时间:2010-03-21 16:42:32

标签: php session path

常见问题,但我很难过。会话变量在我的本地(localhost)部署上传递页面,但不在我的(www)主机上传递。我使用以下代码为每个页面使用一个公共包含文件:

$sessionDomain = "/";
@ini_set("session.cookie_path",$sessionDomain);
$sessionName = "ccSID".md5('/store/');
session_name($sessionName);
session_start();

我确认会话ID cookie(ccSIDxxxxx ...)在我的浏览器中的页面之间保持不变,但是当更改到不同目录中的页面时,会话变量似乎不会支持。

编辑:我的会话cookie文件具有来自一个路径目录的清晰数据,但不具有另一个路径目录。我注意到好的目录中有一个空白的php.ini文件。当我在错误目录中放置一个空白的php.ini文件时,会话cookie变得清晰,但是常规浏览器cookie不会从该目录中的页面保存。在更改会话cookie行为的目录中处理(空白)php.ini文件有什么用?

2 个答案:

答案 0 :(得分:1)

“/”看起来像路径,而不是域 为什么不单独使用默认值保留会话设置?
如果会话cookie没问题,你必须检查session.save_path

中的文件

答案 1 :(得分:1)

我有一种偷偷摸摸的感觉,你在不止一个地方保存饼干。既然你自己命名它们的名字可能是相同的,但它实际上是一个完全不同的会话。

在服务器上查看实际的会话文件。他们都应该是他们应该在的地方吗?是否有一堆出现在他们不属于的地方?

如果是这种情况,那么你的路径可能被设置为相对而非绝对,即使它看起来不像你在这里显示的那样。

另外,也许你应该从你的ini_set()中取出关闭操作符(@),以便你可以看到它是否在抱怨什么?