<?php
session_start();
$id = 'dd';
print_r($_SESSION);
?>
当我转到此页面时,变量$ _SESSION ['id']被定义为一个数字。但是在这个页面上我定义了变量$ id,然后当我打印$ _SESSION时,它已经将变量$ _SESSION ['id']更改为'dd'。这怎么可能?
答案 0 :(得分:2)
你有register globals turned on。这会导致$id
声明覆盖$_SESSION['id']
,因为它们指向同一个地方。
您应该将其关闭,因为它已被弃用,并且可能会导致您遇到的问题。
答案 1 :(得分:2)
您的代码只有两种方式可以按照规定运行:
1)您已启用register_globals,并且您的会话已设置id
参数
这意味着你正在进行旧的php安装,和/或一个非常糟糕的配置。 Register_globals几乎是PHP历史上最伟大的愚蠢行为,幸运的是,已经从#34;现代&#34;中删除了它。 PHP的版本。
2)您事先创建了一个引用,例如
$_SESSION['id'] = 'foo';
$id =& $_SESSION['id']; // $id now points at the session variable
echo $id; // prints foo
$id = 'bar'; // also changes the session value, because of the referencing.
echo $_SESSION['id']; // prints 'bar', because of the referencing.