[PHP-users 5412] Re: unset($_SESSION['...']) ができない

Yasuo Ohgaki php-users@php.gr.jp
Fri, 15 Feb 2002 10:16:58 +0900


Tender Blue wrote:
> PHP4.1.1 でセッション変数の解除ができず困っています。
> 以下のようなコードにおいて、このページにアクセスする
> 前にセッション登録したオブジェクトを取り出し、最後に
> セッションからこの登録してある変数を削除しようと
> unset() 関数を呼び出しているのですが、実際は解除されて
> おらず、他のセッションを使ったページにアクセスすると
> $_SESSION["object"] が残存していて、困った結果に
> なっています。
> 

register_globalsがOnだと思うのですが、違いますか?
英語版Manualを修正した時にregister_globals=Onの場合を十分に考慮していま
せんでした。

register_globals=Onの場合、$_SESSION/$HTTP_SESSOIN_VARSに保存された
セッション変数が次回のリクエストで復元される時に、globalsのセッション変数
も初期化してしまいます。

このため、グローバル変数が登録してあり、この変数をセッション変数のリストか
ら削除するためにはsession_unregister('foo')も実行する必要があります。

register_globals=Offではこのようなコーディングをする必要はありません。
register_globals=Offでスクリプトを作成する事をお奨めします。

-- 
Yasuo Ohgaki
yohgaki@dd.iij4u.or.jp

__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo!  http://bb.yahoo.co.jp/