プロが教える店舗&オフィスのセキュリティ対策術

ログインページを作っていまして、時間が経つと自動的にログアウトするようなページを考えています。
セッションのタイムアウト時間の変更はini_set関数でsession.gc_maxlifetimeの値を変更すればいいことがわかりましたが、上手く動作しません。
他に何か設定しなければいけないのでしょうか。
よろしくお願いします。

//テストのため、10秒後にタイムアウト
ini_set("session.gc_maxlifetime","10");
         ・
         ・
         ・
session_start();

A 回答 (1件)

まず、上手く動作しないというのは、どういう風に上手くいかないのか書かないと第三者には分かりません。



なので、アドバイス程度しか出来ませんが、
session_start()前にini_setしているので書式はそれであっていると思います。
その10秒をもう少し余裕を持って30秒とかにしてもダメですか?

また、session.gc_maxlifetimeはPHP_INI_ALLなので.htaccessでも設定が可能です。

php_value session.gc_maxlifetime *秒数*

の書式で.htaccessを作成してアップしたら上手くいくかもしれません。
ただし.htaccessはサーバー環境に依存しますので、今回の稼働環境がレンタルサーバーだったとしてエラーが出たとしたら、そのサーバーでは使えないと思ったほうがいいかもしれません。

この回答への補足

回答ありがとうございます。

session.gc_maxlifetimeを30秒にしたり、.htaccessを作成しても設定した時間でログアウトできませんでした。
(.htaccessは作ったことないので、内容が合っているのかどうかわかりません)

#.htaccessの内容
<IfModule mod_php4.c>
php_value session.gc_maxlifetime "30"
php_value session.gc_probability "100"
</IfModule>

php.iniで直接設定を変更しても、時間通りにログアウトできませんでした。C:\tmpにセッション情報が残ったままでした。

なにか根本的にやり方が間違っているのでしょうか。

補足日時:2006/11/07 14:14
    • good
    • 0
この回答へのお礼

セッション情報は、ただ放置しているだけは破棄されないことを知りませんでした。
新しくブラウザを立ち上げて、セッションを始動させると、古いセッション情報は設定した時間通りに破棄されました。

どうもありがとうございました。

お礼日時:2006/11/13 12:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!