1

所以我有几个子域共享同一个会话,对吗?

在子域 1(用户面板、编辑信息和内容)上:

$_SESSION['user_id'] = 4;

在子域 2 上(参见用户配置文件):

$user_id = 8;

回到子域 1:

echo $_SESSION['user_id']; // output: 8!

id 8是如何$_SESSION['user_id']设置的?

希望能学到新东西^_^

4

3 回答 3

1

您只需执行以下操作:

$_SESSION['sub_domain1]['user_id'] = 8;
$_SESSION['sub_domain2]['user_id'] = 4;

这是使用 Zend Framework 的名称页处理会话的解决方案。您可以创建类:然后写入方法:My_Session并从键中获取您的值。__contruct($namespace)getset

更新: http:
//framework.zend.com/manual/1.12/en/zend.session.basic_usage.html

于 2013-01-15T15:32:28.440 回答
1

从您的代码中并不完全清楚(您的意思是$_SESSION['user_id'] = 8;在第二个代码片段中吗?),但如果您有两个共享 cookie 并具有相同会话 ID 的子域(并使用 cookie 进行会话),那么您可以修改两者之间的会话.

这可以通过在执行任何与会话相关的事情(或输出任何内容)之前设置会话 cookie 域,或者通过在 php.ini 中为 cookie 域设置配置选项来实现。

如果您以其他方式(例如 URL)传递会话 ID,并在子域之间共享它,这也可能发生。

于 2013-01-15T15:13:18.573 回答
1

您描述的症状使我怀疑您的某些(或全部)站点中启用了register_globals 。$_SESSION数组中的项目成为全局变量时,您会遇到此类问题。

于 2013-01-15T15:39:06.847 回答