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

takeshi ishida ishida.tak @ gmail.com
2011年 3月 9日 (水) 09:31:35 JST


こんにちは。
石田です。
嶋さんの内容と被るのですが、

・ページアクセスの度にログイン状態であれば現在の時刻を記録しておく。
・ログイン状態の時に前回のアクセスから30分以上経っていたらログアウトにリダイレクト

で、実現出来ませんか。



On 2011/03/09, at 1:10, Shima Shizuo <r6 @ chubu.interq.or.jp> wrote:

> こんにちは、嶋です。
> 
>> 次に30分以上放置した場合に、再読み込みもしくは次のページへの移動を制限し
>> たいのですが、次の2方法を考えました。
> 
> 少し発想を変えて、セッションデータに最終アクセス時刻を保存してお
> くのはどうでしょうか?
> 
> $_SESSION["last_access_time"] = time();
> 
> みたいなカンジで。
> アクセスされた時にこの最終時刻が30分より前かどうかを判断する、、、と。
> 
> ============================================================
> 
>> 森 さん
>> 
>> こんにちは。
>> 色々やってみまして、現状は次のとおりです。
>> 
>> まず、やりたいことは何であったかといいますと、
>> ログアウトし忘れたまま放置したクライアントを他人が利用したときに、以前の
>> ログイン状態が引き継がれるとセキュリティー上問題があるので、一定時間(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 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
>> 
> 
> 
> ----
> Shima Shizuo
> 
> _______________________________________________
> 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


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