[PHP-users 17343]Re: クッキーの上書きについて。

Seto seto @ cii.gr.jp
2003年 8月 15日 (金) 21:20:39 JST


 Setoです。
まずSakaiさんが記載されたサンプルスクリプトは
実際に実行したものではないですよね?
というのは各スクリプトの
>session_register("check1","check2");
がちょっとおかしい気がします。

あと同じバージョンの環境を持ってませんので推測ですが
register_globals=On
の環境で POST変数とSESSION変数で同じ変数名を使っているのが原因です。

# そもそもあのサンプルと同じような流れの処理では
# SESSION変数に値が保存されるとは思いませんが。
# まあ なんらかの処理をしてSESSION変数に値を保存できたとして

セッション変数 $check1 の内容 'チェック1'だったときに
form1.php にて'チェック2'に修正して form2.php で処理しようとしたとき

グローバル変数$check1は最初POSTデータ
つまり修正した値'チェック2'になってるはずです。
ところがスクリプトの先頭で
session_register関数の処理にて
$check1 の値はセッションデータの値で上書きされてしまいますので
'チェック1'に戻ってしまいます。
結果 次のスクリプトform3.phpでセッションデータを確認すると
まるで変更できてないように見えてるのだと思います。


対応としては register_globals=On の場合は
セッション変数名はPOST変数とは明示的に変数名を変える
または
セッション変数は$HTTP_SESSION_VARS['check1']を用いる。
それか明示的にPOSTデータからセットしなおすか。

*****************************************
 Junya Seto
 http://www.cii.gr.jp/~seto/php4/
*****************************************



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