[PHP] sessionのタイムアウトをサーバー設定ではなく、プログラム設定で変更する方法

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

PHPを使っていてログインするサービスを構築する場合、多くはsession機能を利用する事になると思う。
その際に、PHPのデフォルトcookieの保持時間は24分になっています。

php.iniの記述を変更してcookie時間をコントロールすると確実に制御できるのですが、もしサーバー設定を変更する権限が無い場合など、PHPのプログラム内でコントロールしたい場合は多々あると思います。

そんな時の対処方法をメモしておきます。

sessionの仕組みを簡単に説明

sessionをセットするという行為は、サーバーに任意文字列をセットし、ローカル環境であるブラウザに、その任意文字列をvalue値として、cookie情報を書き込んでおく。
サーバー側のセッションタイムが切れた段階でcookieも有効期限となり、セッション切れとなる。

多くのWEBサービスのログインの仕組みでこの方法が採用されているのですが、session関数を使うメリットとしては、連想配列的に、cookieやlocalstorageに格納しておきたいデータをサーバ側に設置することができ、有効期限も持たせられることから、セキュアにデータを扱うことができるという点がもっともメリットがある。

単にログイン情報のみを保持するのであれば、cookie情報を自分で書き込んだほうが、柔軟性は高くなることは間違いない。

ただ、デフォルト24分というsessionの保持時間は、多くの場合、短いと判断される事の方が多く、基本的には変更する必要が必ずあるという事なのですね。

php.iniの設定

php.iniの以下の行を変更します。

プログラムでの扱い方

PHPプログラム

下記プログラムを実行するだけで、サーバーセッションを開始する事ができます。

この時点では、サーバーで設定をした時間を上限としたセッション期間になりますが、
JavaScriptでcookie操作をすると、ライフタイムを短くすることが可能になります。
サイトポリシーに沿ってJS側で操作する方が柔軟性が高いでしょう。
※脆弱性対応などを強いられる場合はサーバーのライフタイムで厳密にコントロールしましょう。

JSプログラム

今回は、session_nameが1つの時だけの書き方だったのだが、実際には、ADを入れてたりすると、各サービス事の管理値が入ったりもするので、消さないように気をつけなければいけない。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です