PHP会话变量由错误的变量定义

时间:2014-03-18 20:31:49

标签: php session variables

<?php
session_start(); 
$id = 'dd';
print_r($_SESSION);
?>

当我转到此页面时,变量$ _SESSION ['id']被定义为一个数字。但是在这个页面上我定义了变量$ id,然后当我打印$ _SESSION时,它已经将变量$ _SESSION ['id']更改为'dd'。这怎么可能?

2 个答案:

答案 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.