【问题标题】:PHP Session variable defined by wrong variablePHP Session 变量由错误的变量定义
【发布时间】:2014-03-18 20:31:49
【问题描述】:
<?php
session_start(); 
$id = 'dd';
print_r($_SESSION);
?>

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

【问题讨论】:

    标签: php session variables


    【解决方案1】:

    您的代码只有两种方式可以按照说明工作:

    1) 您已启用 register_globals,并且您的会话已经设置了 id 参数

    这意味着您使用的是旧的 php 安装,和/或配置非常糟糕的安装。 Register_globals 几乎是 PHP 历史上最愚蠢的一个,谢天谢地,它已经从 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.
    

    【讨论】:

      【解决方案2】:

      你有register globals turned on。这会导致$id 的声明覆盖$_SESSION['id'],因为它们指向同一个地方。

      您应该将其关闭,因为它已被弃用,并且可能会导致您遇到的问题。

      【讨论】:

        猜你喜欢
        • 2020-10-22
        • 1970-01-01
        • 2011-12-07
        • 1970-01-01
        • 2011-12-06
        • 2011-10-27
        • 1970-01-01
        • 2017-08-12
        • 2013-05-28
        相关资源
        最近更新 更多