xoopsのセッションを延長して、データ消えを回避


ヤマレコでは、cubeUtilのオートログイン機能を使っています。


セッションを使ってPOSTするようなFormがあるときに、セッションの有効期限が切れていると「Retry Post」というメッセージが出て、入力FormのPOSTデータが消えてしまうことがあるようです。

この問題が起きるたびに、
「1時間頑張って書いた記録が消えた、どうなってるんだ」
みたいな、
書いた人の状況を考えると、
「こんなシステム、もう二度と書いてやるか」
と思いそうな不具合報告を受けるので、何とかして回避したいと思ってました。


今回は暫定対処として、まずはセッションの持続期間を長くして、セッション切れが起きにくくなるようにしました。
セッションハイジャックの危険性が上がるので、セキュリティ的には問題だし、時間を延ばすだけなのでPOSTデータが消えるという問題は解決しないのですが、それも仕方ないかと。

対処内容

xoopsの全般設定メニューにセッション関連の項目があります。
「セッションの設定をカスタマイズする」⇒ 「はい」にチェック
「セッションがタイムアウトするまでの時間」⇒ 時間を指定


これだけでうまくいくのかと思ったのですが、まだ30分ぐらい経つとデータが消える症状が出ました。
で、Cookieの有効期限を確認しましたが、設定していた時間になっていました。


だとするとサーバ側のデータが消されているんだろうと推測し、php.iniの設定を変更しました。


例えば、60分にする場合は

session.gc_maxlifetime 3600

とすればOK。


また、.htaccess

php_value session.gc_maxlifetime 3600

と指定してもいいようです。


これでとりあえず治ったようなのでひと安心。