• 締切済み

PHP SESSION変数の削除について

PHPでブラウザを×で閉じた場合、SESSION変数 の廃棄はどうすればよいのでしょうか? ガーペジコレクション(PHP.INI等の設定)に任せておけばよいのでしょうか? ちなみにログアウトの際は下記のプロシジャを実行しています。 ----------------------------- <?php session_start(); // セッション変数を全て解除する $_SESSION = array(); // セッションを切断するにはセッションクッキーも削除する。 // Note: セッション情報だけでなくセッションを破壊する。 if (isset($_COOKIE[session_name()])) { setcookie(session_name(), '', time()-42000, '/'); } // 最終的に、セッションを破壊する session_destroy(); ?> -----------------------------

みんなの回答

回答No.1

セッションは、session_set_cookie_params関数などで、セッションのIDを保持するCookieの有効期限を設定していない場合、 ブラウザがとじた時点で、ブラウザがCookieを破棄します。 それはCookieにもたせたセッションIDが参照出来なくなっただけで、サーバ側にはセッションは残ってしまっていますので それをガベージコレクションが破棄をする というのは分かっているという前提で。 PHPのガベージコレクションは、PHPが起動した時、php.iniに設定されている確率値で起動するという挙動です。 session.gc_probability = 1 として有効にして session.gc_maxlifetimeで有効期限の秒数を決めて、 session.gc_divisorで確率を設定します。 session.gc_divisor = 1024 だったら、1/1024の確率で起動します。 コレを、 session.gc_divisor = 1 とすれば、100%の確率でガベージコレクションが起動します。 また、一定の確率で起動するガベージコレクションを使わずに、cronなどで一定時間に一回、無効なセッションの掃除をする、という方法を行なっている人もいるようです。 http://matsu.tymy.net/blog/2008/11/16/php%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AEgc/ ご参考まで。

naga4973
質問者

お礼

hogehoge78さん 早速の回答有難う御座います。 SESSION変数(サーバー側)の削除について、個人情報が含まれたサイトを作成する際、セキュリティー(セッションハイジャック等)を考慮して、サイト利用後にSESSION変数を残さない方法を探しておりました。 cronについて教えて頂き、勉強になりました。詳しく調べてみようと思います。