[PHP-users 25518] Re: session_regenerate_id が古いセッションファイルを消さない件
komura
komura @ ma9.seikyou.ne.jp
2005年 4月 30日 (土) 02:00:54 JST
komura です。
On Fri, 29 Apr 2005 23:53:15 +0900
haward99 @ yahoo.co.jp wrote:
> すぐsession_destroy()したら、
> せっかくsession_regenerate_id() でセッションIDを変えて継続させようとしている
> セッションが壊れてしまって元も子もないような気がするのは
> わたしの勘違いなんだろうか・・・?
以下のように session_destroy() を実行する前にセッションの値を保存して
書き戻せば Session ID が変わってもセッションデータを継続することが
できると思います。PHP 4.3.11 で確認しました。
<?php
session_start();
$tmp = $_SESSION;
session_destroy();
session_start();
session_regenerate_id();
$_SESSION = $tmp;
if ( ! isset( $_SESSION['count'] ) ) {
$_SESSION['count'] = 0;
}
++$_SESSION['count'];
print_r( $_SESSION );
echo session_id();
?>
問題としては、アクセスする毎にセッションファイルが作成されるため、アクセス
回数が多い場合は、大量のゴミファイルが残ります。
この方法で毎回 Session ID を変更するのであれば、ガーベージ・コレクション
の起動確率を高めにした方が良いと思います。
--
komura <komura @ ma9.seikyou.ne.jp>
PHP-users メーリングリストの案内