[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 メーリングリストの案内