PHP セッションの奇妙なルール
<br />
session_start();<br />
var_dump($_SESSION);<br />
$name = 'laruence';<br />
$_SESSION['name'] = null;<br />
ログイン後にコピー
出力: array(1) { ["name"]=> string(8) "ラルエンス" }
$name と $_SESSION['name'] は、互いに比較できない 2 つの変数です。なぜこれらを同じ変数にする必要があるのでしょうか。PHP を発明した人は頭がおかしいのでしょう。
-----解決策---------
私は間違っていました。この問題は register_global とは何の関係もありません。ただし、私のバージョン 5.4 にはこの問題はなく、5.4 には register_global オプションがありません。あなたのコードは、laruence のブログから引用されているようです: http://www.laruence.com/2009/07/13/976.html
彼はその理由をこう説明した。 session.bug_compat_42 がオンになっている場合、PHP は変数名が $_SESSION['name'] への参照であると認識し、session_close のときに変数 a の値が書き戻されます。