[PHP-users 9660] Re: セッション変数の内容が復活する

Keisuke Sasame php-users@php.gr.jp
Sun, 1 Sep 2002 03:18:54 +0900


Kei@千葉です。

既に解決されていましたら、すいません。

サンプルソースを見る限り、セッション変数を破棄している箇所が見当たりませ
んので、
例え、ブラウザを一旦閉じたとしても、
セッション変数が自動的に削除される時間がたたない限り(ディフォルトで24
分)
以前の情報が反映されます。
(ソースを見る限り、セッションIDはクッキーにより保持されているようですの
で・・・)

unset( $_SESSION['変数名'] );

とするか、全部破棄するなら、

session_unset();

とするべきです。

蛇足ですが、IE6の場合、キャッシュによって、
ある条件下で、以前の情報が、自動的に表示されてしまうようです。
IE5.5,NN4.x,NN6,NN7では問題ありませんでした。
(厳密な原因はまだ私のほうでもわかりませんが、リロードすれば問題ないので
キャッシュが原因かと思われます)

セッションスタートするまえに、キャッシュリミッターをnocacheに設定するこ
とにより
私の場合は解決しました。

session_cache_limiter('nocache');
session_start();

セッション変数を使用する場合、キャッシュによる誤作動を起こしやすいので、
セッションスタートする前に、条件にあった、キャッシュの設定をするべきで
す。

間違いがありましたら、ご指摘頂ければと思います。


---- Kei<kei_s@mbe.sphere.ne.jp>


> -----Original Message-----
> From: php-users-admin@php.gr.jp
> [mailto:php-users-admin@php.gr.jp] On Behalf Of Koichi Shimamura
> Sent: Wednesday, August 28, 2002 10:39 AM
> To: php-users@php.gr.jp
> Subject: [PHP-users 9575] セッション変数の内容が復活する
>
>
> こんにちは、島村です。
>
> 二つのページを行ったり戻ったりするときに、なくなっているはずのセッショ
>> 変数の値がセットされてしまいます。
>
> ---------- test1.cgi ----------
>
> #!/usr/local/bin/php
> <?php
>   session_start();
>   print_r($_SESSION);
> ?>
> <html>
> <head>
> </head>
> <body>
>   <?php
>     if ($_SESSION['C1'] == "ON")
>       echo "ON";
>     else
>       echo "off";
>   ?>
> </body>
> <form method="POST" action="test2.cgi">
>   <input type="checkbox" name="C1" value="ON">abc
>   <input type="submit" value="送信" name="B1">
>   <input type="reset" value="リセット" name="B2">
> </form>
> </body>
> </html>
> ---------- test1.cgi ----------
>
> ---------- test2.cgi ----------
> #!/usr/local/bin/php
> <?php
>   session_start();
>   $_SESSION = $_POST;
>   print_r($_SESSION);
> ?>
> <html>
> <head>
> </head>
> <body>
>   <?php
>     if ($_SESSION['C1'] == "ON")
>       echo "ON";
>     else
>       echo "off";
>   ?>
>   <a href="test1.cgi">back</a>
> </body>
> </html>
> ---------- test2.cgi ----------
>
> test1.cgi のチェックボックスを付けたり、消したりしながら二つのページを
>> ったり来たりしていると、チェックをはずしたにもかかわらず、行って帰って
>> るとチェックが付いている事になってしまいます。
>
> 何がどうなっているのでしょうか?
>
> 対策をご存知の方がいらっしゃいましたら、よろしくお願いします。
>
> 環境
>   レンタルサーバ FreeBSD 4.5
>     PHP 4.2.2 cgi 版
>
> です。
>
> 島村幸一
http://www.bekkoame.ne.jp/~joe90/

_______________________________________________
PHP-users mailing list
PHP-users@php.gr.jp http://ns1.php.gr.jp/mailman/listinfo/php-users