人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPにおいて、セッションに存続時間を設定し、自動的に終了する方法を教えてください。

私が調べた限り、次の方法が存在するようですが、

?ini_set('session.gc_maxlifetime',600);
?session_cache_expire(60);

特に、?について、内部的に何が行われているのかわかりませんでした。

●質問者: witt
●カテゴリ:インターネット ウェブ制作
✍キーワード:PHP セッション 存在 自動
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ●
●60ポイント

すでにマニュアルは確認済みでしょうか。

session.gc_maxlifetime は、データが'ごみ'と みなされ、消去されるまでの秒数を指定します。

gc(ガベージコレクション)の発生確率を設定するsession.gc_probability、session.gc_divisorの設定を適切にしていないと期待したタイミングで削除することはできませんのでご注意ください。

session_cache_expire()はカレントの session.cache_expireの設定を返します。

上記のようにこの関数はsessionのキャッシュの有効期限を返す、あるいは設定するためのものです。

(セッションそのものではなく、キャッシュの設定です。)

キャッシュの設定はsession.cache_limiterがnocacheの時には全く意味がありません。

session.cache_limiterのデフォルトはnocacheです。

(sessionを使う必要があるサイト(例えばオンラインショップなど)の場合「戻る」で戻られると問題になることがあります。)

PHP-usersメーリングリストの上記のスレッドで一定時間経過後にでログアウトさせる方法について論じられていたことがあります。

"セッションの有効期限切れ=ログアウト"とせずに、セッションデータ内に

最終アクセス時間(または有効期限切れ時間)を記録して比較するだけで

実装できます。

この方法を参考にしてみてはいかがでしょうか。

参考になれば幸いです。

◎質問者からの返答

ご推察のとおり、私が本件について調べているのは、

自動的にログアウトするための実装を知りたいからです。

ユーザがWebアプリにログインして、一定時間経過後、

何らかの方法の方法で自動的にセッションを終了させ、

その後、ユーザがWebアプリにアクセスしてきたら、

次の方法でトップページにリダイレクトさせようと

考えていました。

if(!isset($_SESSION['login'])){

//トップページにリダイレクト

}

?の方法については、一定時間経過後、セッションが

破棄されるかは session.gc_probability による確率に

依存するようですが、無効にはなのようですから

(ソフトバンク「PHP4徹底攻略実践編」p.52 l.8)、

私の考えはうまくいきそうだと思っていました。

ちなみに、?については、オライリー「初めてのPHP5」p.158 l.4

からの情報です。

?の方法については、そもそもなんで、キャッシュと

セッションの終了が関係があるのかわかりませんでした。

この情報源は、技術評論社「PHPポケットリファレンス」p.502です。

これはセッションの終了に使えないのではないか、この著者の

勘違いではないか、と思います。

以上、私の考えに不備があれば、ご指摘いただければ助かります。

PHPについて、一次情報である

PHPマニュアル http://jp.php.net/manual/ja/index.php

を含め、いろいろ調べていますが、詳細なところのドキュメントが

少なく、あいまいな記述が多いため、ミッションクリティカルな

コードを書くには不安を感じています。

---

セッションの有効期限切れ=ログアウト"とせずに、セッションデータ内に

最終アクセス時間(または有効期限切れ時間)を記録して比較するだけで

実装できます。

---

このやり方が一番無難で確実だと思いました。これで実装したいと思います。

ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ