[PHP-users 16288]Re: sessionについて(php.ini設定)

Seto seto @ cii.gr.jp
2003年 6月 29日 (日) 23:31:36 JST


 Setoです。

>いえいえOFFでした。
ということですと最初に提示されたコードは
register_globals = On
で動作するコードなので 動作したというのが逆に納得いきません。

で、まあそれはおいておくとして
[PHP-users 16285][PHP-users 16286]でわたなべさんが提示されたコード
なんですが 後の方[PHP-users 16286]は動作するでしょうが
前の方 つまり下記コードは動作しないでしょう。
(わたなべさんご本人も「見事に間違ったコード」と訂正されてます)
それは
>> <?php
>>   session_name("MYSESS");
>>   session_start();
>>   if( $_SESSION["access"] )
初回時はまだこの変数が存在しないので
この判別が正しく動作しません。よって期待する
$_SESSION["access"] = 1;
も処理されずに
結果2回目以降もこの判別は正しく動作しないのです。

でどうすりゃいいのかというと
    if ( !isset($_SESSION["access"]) )
に変更すれば動作するはずです。

もしくは[PHP-users 16286]で提示されているコードに変更するかですね。
# 私ならこちらのコードでも isset等 でのチェックをするようにしますが


この辺のミスに陥らないようにするために
php.ini の error_reporting を E_ALL にすることをお勧めします。


>$_SESSION["access"]でPHP が自動的に変数 $access をとるのでは
register_globals=Off の時には このようなことは行われません。

******************************
 Junya Seto
******************************



PHP-users メーリングリストの案内