所以我在一个使用$_SESSION
变量的 PHP 站点上做一些维护。我开始看到一些非常奇怪的行为,经过数小时的调试,我才发现了这一点。例如,假设我有一个这样的会话变量设置:
$_SESSION['user']['id'] = 123;
$_SESSION['user']['firstname'] = 'John';
$_SESSION['user']['lastname'] = 'Doe';
在脚本中的某一时刻,使用一些 Zend 类调用 MySQL 表:
$sql = "SELECT whatever FROM table";
$user = $db->fetchRow($sql);
现在这里是奇怪的开始......在这个数据库调用之后,我的$_SESSION['user']
数组值突然变成了从数据库调用中检索到的对象......
基本上:$_SESSION['user']
现在与使用 fetchRow DB 方法检索到的对象相同,该方法应该存储在变量 中$user
。我以前从未见过这种情况。
我唯一能弄清楚的是因为变量名$user
与$_SESSION['user']
数组键名相同,它就像一个快捷方式或其他东西。
这是我以前从未听说过的某种奇怪的 PHP 会话快捷方式吗?
附带说明一下,我知道$_SESSION
直接访问 vars 不是最佳实践。我没有建立这个网站。我的工作只是修复一些东西并添加一些功能。
更新:果然,register_globals 已开启。感谢您的快速帮助。难怪我看到这种奇怪的行为。