PHP会话变量快捷方式?

Jak*_*son 1 php variables shortcuts session zend-framework

所以我在使用$_SESSION变量的PHP站点上进行一些维护.我开始看到一些非常非常奇怪的行为,经过几个小时的调试后我才想到这一点.举个例子,假设我有一个像这样的会话变量设置:

$_SESSION['user']['id'] = 123;
$_SESSION['user']['firstname'] = 'John';
$_SESSION['user']['lastname'] = 'Doe';
Run Code Online (Sandbox Code Playgroud)

在脚本中的某一点,使用一些Zend类调用MySQL表:

$sql = "SELECT whatever FROM table";
$user = $db->fetchRow($sql);
Run Code Online (Sandbox Code Playgroud)

现在这里是奇怪的开始......在进行这个数据库调用之后,我的$_SESSION['user']数组值突然变为从数据库调用中检索的对象...

基本上:$_SESSION['user']现在与使用fetchRow DB方法检索的对象相同,该方法应该存储在变量中$user.我以前从未见过这个.

我唯一可以弄清楚的是因为变量名$user$_SESSION['user']数组键名相同,它就像一个快捷方式或其他东西.

这是我之前从未听说过的某种奇怪的PHP Session快捷方式吗?

另外,我知道$_SESSION直接访问变量不是最好的做法.我没有建立这个网站.我的工作只是修复一些东西并添加一些功能.

更新:果然,register_globals打开了.谢谢你的快速帮助.难怪我看到这种奇怪的行为.

Mac*_*ros 6

听起来你在PHP.ini中将register_globals设置为On.关掉它应该解决这个问题.

如果您无权更改PHP.ini,则可在此处讨论替代解决方案