[PHP-users 4294] Re: PHP4.1.0 でセッション変数をunset した場合

Toshiyuki Kajii php-users@php.gr.jp
Fri, 14 Dec 2001 17:34:06 +0900


梶井です。

* Fri, 14 Dec 2001 14:41:23 +0900
* "Eita Morikawa" <chanoma@parknet.co.jp> wrote:

>実験していただいたcase2と、case2から $_SESSION['a'] = &$a; の一行を
>削除したソース (case5とします)でregister_globalsをOnにして試したところ
>
>case2 → key1
>case5 → key2
>
>となりました。ただし、スクリプトの先頭でsession_start()をしており、リロー
>ドするとcase5も key1となります。(リロードの前後でsession_idが同一であるこ
>とは確認)

確認しました。不思議です。
というか、register_globalsがOffの状態で

 $a = array("key1" => "value1");
 session_register("a");
 unset($a);
 $a = array_merge($a, array("key2" => "value2"));

これを試したところ、key2が入ります...
Offなのになぜ?

もし、session_register('a')が行われて宣言されたのに、$_SESSION['a']への
代入が最終的にされなかった場合は自動的に$aを代入するとかやっているので
しょうか。もしそうだとすれば、一応、case5についても説明可能ですが...
しかし、そんな仕様はイヤ。


*---------------------------------------------------*
    Toshiyuki Kajii    梶井 俊幸
    e-mail:            mikoto@camino.nissan.ne.jp
*---------------------------------------------------*