2012-03-06 21 views
2

誰かのセッションが終了しているかどうか、もしあれば何かできるかどうかを知ることができるのだろうかと思っていました。PHPセッションが破棄されたときに何かする

たとえば、セッションが終了した場合、プレーヤーのステータスをオフラインに設定します。

+1

セッションを破棄した場合は、ユーザーがサイトの訪問を停止した場合 – Brad

+0

アプリケーションフレームワーク(Symfony、CodeIgniter、Cakeなど)を使用していますか? –

+0

私のサイトに行ったことはありません。だから彼らがブラウザを閉じるならば、私は –

答えて

1

ユーザーがサーバーに要求しない場合は、データベースシステムを使用しない限り、セッションが終了した時点を確実に知ることはできません。たとえば、セッションテーブルがあるとします。

session_id | user_id | session_start_time 

ページをロードするたびに、session_start_timeが削除可能な古いものかどうかを調べます。たとえば:

if (($data['session_start_time'] + USER_SESSION_TTL) < time()) { 
    // delete row 
} 

USER_SESSION_TTLは、彼がアクティブでない場合、ユーザーのセッションが生きたままの時間です。

ユーザーが関連付けられているセッションを持っていない場合は、安全にオフラインであると見なすことができます。私は少し一般化しましたが、多くのシステムに適用できます。

希望します。

+0

ありがとうございますが、この部分はどういう意味ですか? USER_SESSION_TTL –

+0

私はその部分の説明を追加しました。基本的には、ユーザーセッションがあなたのサイトにアクセスしていない場合(アクティブではない)、ユーザーセッションが存続する時間(秒)です。 – vanneto

関連する問題