我真的很想知道这段代码
<?
session_start()
$_SESSION['me'] = 654;
$me = $_GET['me'];
echo $_SESSION['me'];
?>
Run Code Online (Sandbox Code Playgroud)
它将打印$ me值而不是$ _SESSION ['me']值.
这是一个错误还是出于安全原因这样做?任何解释?
你有任何机会启用register_globals吗?
编辑:这似乎与PHP 4.3之前存在的着名会话副作用有关.如果未初始化会话变量,则将使用可能存在的同名全局变量的值.
PHP 4.2.3及更低版本具有未记录的功能/错误,允许您在全局范围内初始化会话变量,尽管register_globals已禁用.如果使用此功能,并且还启用了session.bug_compat_warn,PHP 4.3.0及更高版本将发出警告.禁用此指令可以禁用此功能/错误.
不过,我仍然无法理解为什么会发生这种情况.pygorex1在他的回答中所写的内容甚至更奇怪.