2010-03-21 84 views
2

常见问题,但我很难过。会话变量通过本地(localhost)部署的页面传递,但不在我的(www)主机上传递。我使用的是常见的包括与此代码为每个页面文件:PHP会话变量不通过页面

$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不会从该目录中的页面保存。在目录中处理(空白)php.ini文件会改变会话cookie的行为?

+0

您是否检查cookie是否被接受并在随后的请求中发送? – Gumbo 2010-03-21 16:47:46

+0

只要我请求来自同一个目录的页面,(会话)cookies就会保持设置。来自不同目录的请求,cookie不见了。 – mitch 2010-03-21 17:10:15

+0

但你说在你的问题中完全相反 - '我确认会话ID cookie在各页上保持不变'。现在你说cookie不见了。无论如何,你必须摆脱所有这些有趣的事情,只留下'session_start();'。我相信你会让你的网站工作。 HTTP交换日志也有助于cookie调试。 – 2010-03-21 17:13:49

回答

1

“/”看起来像一条路径,而不是域。
为什么不单独使用默认值保留会话设置?
如果会话cookie正常,你必须检查session.save_path内的文件

+0

对不起,这并不能解决问题。 – mitch 2010-03-21 17:08:42

+0

@mitch清除浏览器Cookie缓存并重试 – 2010-03-21 17:14:25

+0

这样做。仍是同样的问题。 – mitch 2010-03-21 17:59:59

1

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

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

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

另外,也许你应该把你的ini_set()的shutup操作符(@)关掉,这样你就可以看到它是否在抱怨什么?

+0

我已经使用session.save_path放置了会话数组,现在正在观察该文件。从一个页面保存变量时看起来很好,但从另一个页面保存时很奇怪(就像cookie被编码一样)。再次,我的本地工作很好。 – mitch 2010-03-21 21:41:55

+0

会话数据正在保存在我期望的位置,当我期望时,但是使用简单变量($ _SESSION ['test'] ='test';)进行测试时,它在一页中无法理解,但从另一页清楚。这绝对是保存到同一个会话名称和地点,但从页面而不是从另一个页面乱码。 – mitch 2010-03-21 21:52:28

+0

我得到(测试| S:4:“测试”;)(。iFcXRQdc4KoZBgg2AMi4hKTzR380YphO8xCK4fK6IDPIRrbk7Nnnaq06FlbbH0YmBGzMbMy85TVGXPyDdDI5KMtq08PQMuK6ypGKKyYDowA)我的本地服务器上的问题页面(工作正常),但我在尝试我的主机服务器上时相同。 – mitch 2010-03-21 22:07:37