session【追記】2015年6月、より安全な記事を書いていますこちらの記事に新しい情報を載せています。↓以下の記事は古い情報となりますので、ご了承ください。———-僕の会社では製品の情報や新着のお知らせなどをデータベースで管理し、管理ページからフォームを介して入力や編集が行えるようにしている。これは入力のフォーマットを一定にすることで社内の情報をなるべく統一し、管理しやすい状況に持っていく為。要はいろんな文言なんかがしちゃかちゃに書かれている状況が気持ち悪くてこのようなものを作った。ちなみに以前はサイト内に3ヶ所あるお知らせテーブルにHTMLで逐一書き込んでいた...(ヽ’ω`)フォームからデータベース管理にすると入力も楽になるので非常によい。データも統一されるので精神衛生上も健康になれる。今回は、この管理ページのセッションの寿命もちょっと伸ばしたからそれを書き留めておこうという話。会社の管理ページではあんまり...と思い実装しなかったのだけど、要望が多く、社内のPCは外部に触られないところにあるので実装した。XSSやCSRF対策は実装している。今使っている管理ページのCMSは、これの7章8章を元に制作したものに改良を加えているもの。25,318Amazon.co.jpで詳細を見るこれには非常にお世話になった。実行時設定セッション有効期限を伸ばすお世話になる設定たちsession_save_pathsession.gc_maxlifetimesession.cookie_lifetimeこのCMSではセッションを用いてログイン管理をしている。セッションの寿命や確率をいじる。ガベージコレクションセッションはsession_start()が行われた時に、1/100の確率で24分より古いセッションが削除される。「24分より古いセッション」の部分を変えることでセッションの寿命を伸ばすことができる。実はセッションはドメインを区別しないため、セッションの寿命を伸ばすだけでは、サーバー内の他のサイトの影響を受けてセッションが削除されてしまうらしい。ここで登場するのがこれ。session_save_pathこれでセッションの保存先を変えることができ、他のサイトに影響されずにセッションを管理できる。具体的には、session_save_path("/tmp");とすることで、10日までは寿命を伸ばすことができる(10日でサーバーのcronがセッションを削除する)ちなみにここで書いている方法はphp_iniを操作するのではなく、PHPファイルに直接書き込んでいる。セッションの寿命を伸ばすここはsession.gc_maxlifetimeで管理されてるらしい。24)これで基本的にはオッケーなんだけど、ブラウザを閉じてもセッションが切れないようにしたい場合は、session.cookie_lifetimeに同じ値を入れることで生きるようになる(デフォルトは0)これをsession_start()より前に書く。86400);session_start();これにより、「1/100の確率で1日より古いセッションが削除」という設定になる。この確率を変えることも出来るんだけど、負荷をかけないためにこういう確率になっているのであまりいじらないほうがいいかなーと個人的に思う。これでうちの管理ページではセッションが切れないようになった。セキュリティの問題もあるので、有効期限に関してのご利用は計画的にしたほうがいいと思います。SESERAGISEVEN。