2012-02-10 8 views
2

これが可能かどうかわかりません。私が探しているのは、セッションが終了するイベント(存在する場合)です。私は何とかそれをつかんで、セッションが終了する直前に自分の行動を実行したいと思います。セッション変数が設定されているため、セッションが終了するとすぐに失うことになります。セッションがいつ終了するのかを検出する方法。 PHP

可能であれば、これはおそらく私の目標を達成するための貧弱な方法だと思います。午後7時にはまだ就任しています。私の興奮が解決策を見つけることを想像してください。

ありがとうございます。

+1

あなた自身が述べているように、あなたは目標を達成するための貧弱な方法を感じています。あなたの目標が実際にどのように拡大しているのでしょうか? – Leigh

答えて

0

setcookie("TestCookie", $value, time()+3600); /* expire in 1 hour */ 

http://php.net/manual/en/function.setcookie.php

あなたは、通常のセッション機能を変更し、それらを適切に期限切れにできるようにする必要はありませんこの方法です。

+0

私はこれを達成しようとしているものが最良の解決策だと思います。ありがとう。 –

1

データベースアクセス権がある場合は、セッション情報をセッションテーブルに格納し、その特定のユーザーによって登録された最後のセッションからその変数を取得できます。

私が知っていることは、動作が保証されているセッション終了直前のイベントをトリガする方法はありません。脆弱なハックを克服するのではなく、データの処理方法を再構築することが最大の関心事です。

2

データベースを使用するために独自のセッション保存ハンドラを作成する場合、データを削除する前に適切なデータを取得するために使用できるガベージコレクションのコールバックを持つことができます。

session_set_save_handler、特にgcコールバックを参照してください。あなたはクッキーにデータを保存し、有効期限を制御することができ

0

Javascriptでこれを並べ替えることができます。セッションが期限切れになるまで、スリープするJS機能をサーバーに提供させます。

しかし、これは決して簡単なことではありません。ユーザーがあなたのページを離れてしまった場合、厳しいクッキーはもうJSを実行していません。もちろん、セッションが終了したときに何を言っても、連絡を取ることはできません...

本当にデータを削除してからカスタムユーザーに警告し、ユーザーに猶予期間を与えるハンドラです。破棄ハンドラがトリガする2回目に、実際にデータを削除します。

0

技術的には、PHPによって保存されたセッション(サーバー側のCookieのようなセッション)が終了するのを知ることはできません。 PHPの設定では、クッキーの存続期間を言うことができますが、設定した時間より長く続くことがあります。

セッションの持続時間を正確に把握する必要がある場合は、セッション管理システムを手動で構築し、PHPを使用しないでください。

関連する問題