[PHP-users 35517] Re: session_cache_expire 戻り値

Tomoo Nomura nomurat @ tmo.co.jp
2011年 3月 7日 (月) 16:22:36 JST


森 さん

こんにちは。
色々やってみまして、現状は次のとおりです。

まず、やりたいことは何であったかといいますと、
ログアウトし忘れたまま放置したクライアントを他人が利用したときに、以前の
ログイン状態が引き継がれるとセキュリティー上問題があるので、一定時間(30
分程度)アクセスが無かった場合、自動的にログオフ状態にしたい。

ここで、利用しているサーバーがvirtual domainなので、少々工夫が必要になっ
てきました。Debianでは、sessionファイルは/var/lib/php5/sess_xxxxxx とし
て保存されるのですが、これをcronで一律的に扱うのは問題があり、
ini_set( "session.save_path", "/var/lib/php5/hoge" ) ;
として別領域に置きました。これで、標準のcronにより削除されることは無くな
りました。

次に30分以上放置した場合に、再読み込みもしくは次のページへの移動を制限し
たいのですが、次の2方法を考えました。
1)session_start();はコールされた時点でgarbage collectionを行うというこ
となので、各ページにおいて、
ini_set( "session.gc_maxlifetime", 180 ) ;
session_start() ;
としてやれば、アクセスの無いsessionファイルが30分で破棄されるので、実現
できる。
2)ブラウザーのcookie内にsession_idを覚えていますが、これを失効させれ
ば、session_start();で新たなsessionを作成するので、前に値を引き継がな
い。従って、各ページにおいて、
session_set_cookie_params( 1800 ) ;
session_start() ;
としてやれば、30分以上放置した場合は、新しいsessionとなる。

現在1)をテスト中ですが、どうもうまくゆきません。いつまでもsessionファ
イルが残っているようです。ケアレスミスかもしれませんが、もう少し調査して
報告致します。

野村

(2011年03月06日 22:04), shinichiro mori wrote:
> 森です。
> 
> 引き続き調査をされるという事ですが、返信を読んで思った事について投稿します。
> 
>> そこで、cronを止めてどのようになるかテストをしてみたのですが、session
>> ファイルは残り、sidの値は消えませんでした。しかしながら、$SESSION_EXPIRE
>> で指定した時間が過ぎてもsidの値が残っており、seeesion_cache_expire()がど
>> のように働いているのかを調べていたところです。
> 
> session_cache_limiter() と session_cache_expire() は、
> ページの内容についてキャッシュする規則および時間を設定するものです。
> 
> ブラウザにcookieが残っている限り、
> cronを止めてガベージコレクションが動いていないためセッションファイルも残っていますので、
> セッションのデータが正常に初期化されたのだと思います。
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://oldwww.php.gr.jp/php/novice.php3
> 
> 


-- 
****** Nomura Technical Management Office Ltd. *****************
 Tomoo Nomura      nomura @ tmo.co.jp       http://www.tmo.co.jp/
    Phone: +81-78-797-0240 Fax: +81-50-3743-1336
 Worldwide Airline Timetable 'Flight Planner'
 European Electronic Timetable 'HAFAS'         ValueFax Support
****************************************************************


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