PHP中奇怪的会话范围问题

时间:2009-09-23 05:46:41

标签: php session

我遇到了一个我以前从未遇到过的非常不正常的问题,我有一个注册页面/表单和一个处理页面,用于提交,在处理页面上我设置了用户数据中的任何错误,如空字段和将它们设置为会话var数组

$_SESSION['signup_errors'] = $signup_errors;

$ signup_errors是我设置为会话的数组,然后我可以在同一页面上访问该会话数据,但我只是改变了我的网站,使用mod-rewrite来更改URL,我唯一可以看到的东西想到的是在我的注册表单上我不能再访问这些会话变量了,现在我使用mod-rewrite url就像这个domain.com/account/new一样,它曾经是domian.com/?p=account.new所以现在它似乎在一个不同的文件夹中,可能与它有关吗?

我已经尝试了很多调试,这是我唯一可以想到的可能是因为它现在似乎是一个不同的目录,因为mod重写可能会使会话无法访问?

3 个答案:

答案 0 :(得分:3)

您确定要在您访问的每个页面上开始会话吗?我会检查以确保有

session_start();

必要时。

另外,

是什么
print_r( $_SESSION ); 

返回?什么都没有?如果没有,它可能表明我在说什么。

答案 1 :(得分:0)

我会检查你是不是在改变域名。例如。 domain.com - > www.domain.com

通常,cookie用于跟踪会话ID,默认情况下,cookie绑定到单个域。 I.E.如果会话是在www.domain.com上创建的,那么当您访问login.domain.com时,将不会发送cookie,从而导致没有会话信息。

答案 2 :(得分:0)

它曾经发生在我身上,也许你有类似的情景。会话变量是临时的,一旦输出到屏幕我会销毁它。

如果您正在路由所有内容,则使用mod重写,如果图像损坏,也可能会重定向到您的php脚本,它会在后台打印出错误并销毁该会话变量。

只是一个想法!