所以我有几个子域共享同一个会话吗?
在子域1(用户面板,编辑信息和内容)上:
$_SESSION['user_id'] = 4;
在子域2上(参见用户个人资料):
$user_id = 8;
返回子域1:
echo $_SESSION['user_id']; // output: 8!
$_SESSION['user_id']
如何设置ID为8?
希望学习新的东西^ _ ^
答案 0 :(得分:1)
您的代码并不完全清楚(您在第二个代码段中的意思是$_SESSION['user_id'] = 8;
吗?),但如果您有两个共享Cookie且具有相同会话ID的子域(并使用Cookie用于会话),然后你可以修改两者之间的会话。
这可以通过在执行任何与会话相关的事情(或输出任何内容)之前设置会话cookie域,或者通过在php.ini中为cookie域设置配置选项来实现。
如果您以其他方式传递会话ID(例如URL),并在子域之间共享,则也可能发生这种情况。
答案 1 :(得分:1)
您只需执行以下操作:
$_SESSION['sub_domain1]['user_id'] = 8;
$_SESSION['sub_domain2]['user_id'] = 4;
这是一个使用Zend Framework的namespage进行句柄会话的解决方案。
您可以使用My_Session
创建类__contruct($namespace)
,然后写入方法:get
和set
以从密钥中获取您的值。
更新:
http://framework.zend.com/manual/1.12/en/zend.session.basic_usage.html