Php 变量名覆盖会话名

Php 变量名覆盖会话名,php,session,variables,overwrite,Php,Session,Variables,Overwrite,所以我有两个子域名共享同一个会话,对吗 在子域1(用户面板、编辑信息和内容)上: 在子域2上(请参阅用户配置文件): 返回子域1: echo $_SESSION['user_id']; // output: 8! 如何将$\u会话['user\u id']设置为id 8 希望了解一些新的东西^ ^您的代码并不完全清楚(您的意思是第二个代码段中的会话['user\u id']=8;),但是如果您有两个子域共享cookie并且具有相同的会话id(并且对会话使用cookie),那么您可以修改这两个子

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

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

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

返回子域1:

echo $_SESSION['user_id']; // output: 8!
如何将
$\u会话['user\u id']
设置为id 8


希望了解一些新的东西^ ^

您的代码并不完全清楚(您的意思是第二个代码段中的会话['user\u id']=8;),但是如果您有两个子域共享cookie并且具有相同的会话id(并且对会话使用cookie),那么您可以修改这两个子域之间的会话

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


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

您只需执行以下操作:

$_SESSION['sub_domain1]['user_id'] = 8;
$_SESSION['sub_domain2]['user_id'] = 4;
这是一个使用Zend Framework的名称页处理会话的解决方案。 您可以使用
\u construct($namespace)
创建类:
My\u Session
,然后写入方法:
get
set
,以从键获取值

更新:

您描述的症状让我怀疑您的某些(或所有)站点启用了该功能。当
$\u SESSION
数组中的项成为全局变量时,您会遇到这种问题。

您可以看看这个吗@BogdanBurim虽然通常是正确的,但它不一定是正确的。听起来像是在你的一些(或全部)网站中启用了:-?@alvarog.Vicario。谢谢这就是原因。我一直知道register_globals是一个安全问题,但我自己从未经历过。但现在我知道:)如果你回答我会接受我确实设置了会话cookie域来共享会话。你读的代码是正确的。我已经设置了$user\u id。但是在子域2上,会话['user\u id']没有受到干扰。很酷,这确实是防止某些会话干扰其他会话的好方法,但不是我问题的原因。(注册全球was)
echo $_SESSION['user_id']; // output: 8!
$_SESSION['sub_domain1]['user_id'] = 8;
$_SESSION['sub_domain2]['user_id'] = 4;