[PHP-users 20119]Re: session_regenerate_idについて

MT akc @ mutt.freemail.ne.jp
2004年 1月 29日 (木) 17:08:45 JST


渡辺さん返信ありがとうございます。

> 4.3.2のバグ? 4.3.3の環境で試せませんか?
よく利用するホスティングサーバーのPHPのバージョンが現在4.3.2で、
顧客のページを設置しているのもこのバージョンのものが最も多いです。
将来的にはアップデートもきちんと対応はしてもらえると思いますし、
現状代わりの方法で問題は解決しているのですが、バグなのか仕様なのか
マニュアルには確かに4.3.3以降はcookieに新しいIDをセットするとありますが
では4.3.2で新しいIDをセットしてくれないのならどうすればよいのだろう?
と行き詰まり、結局代わりの方法が手っ取り早かったので、そちらにしました。

session_start();
session_regenerate_id();

もちろんこれしかないのですが、

session_start();
echo session_id();       #1
session_regenerate_id();
echo session_id();       #2

などとすれば、確かにsession_regenerate_id()前後でIDは変わっています。

でも次回アクセスの時 #1 は #2 となり、#2はさらに新しいID となることを
期待するものの、#1 は最初の #1 のIDのままで、#2 だけ新しいID になっています。

session_start();
session_regenerate_id();
$_COOKIE["SESSIONNAME"] = session_id();

とセットしてみても、その場ではcookieにも新しいIDがセットされていますが、
次回アクセス時は古いIDが復元されます。

unset($_COOKIE["SESSIONNAME"]);
session_start();
session_regenerate_id();

とすると、古いIDは復元されませんが、regenerateされたIDでもなく、
まったく新規のアクセスのようになってしまいます。

このような状況です。
セッションIDを明示的に変更して送信するタイミングを勘違いしているのか、
結局4.3.3以前ではsession_regenerate_id()は使えないのかが知りたいです。

よろしくお願いします。

-- 
MT <akc @ mutt.freemail.ne.jp>



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