<?php
session_start();
$id = 'dd';
print_r($_SESSION);
?>
當我進入這個頁面時,變量$ _SESSION ['id']被定義爲一個數字。但是在這個頁面上,我定義了變量$ id,然後當我打印$ _SESSION時,它將變量$ _SESSION ['id']更改爲'dd'。這怎麼可能?由變量定義的PHP會話變量
<?php
session_start();
$id = 'dd';
print_r($_SESSION);
?>
當我進入這個頁面時,變量$ _SESSION ['id']被定義爲一個數字。但是在這個頁面上,我定義了變量$ id,然後當我打印$ _SESSION時,它將變量$ _SESSION ['id']更改爲'dd'。這怎麼可能?由變量定義的PHP會話變量
這裏只有兩種方式爲您說明代碼工作:
1)你有register_globals的,並且您的會話已經有了一個id
參數設置
這意味着你在一箇舊PHP安裝,和/或一個可怕的配置不好。 Register_globals幾乎是PHP歷史上唯一最大的STUPIDITY,它已經從「現代」版本的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.
您有register globals turned on。這導致$id
聲明覆蓋$_SESSION['id']
,因爲它們指向相同的地方。
您應該關閉它,因爲它已被棄用,並可能導致像您遇到的問題。