2011-10-28 7 views
0

私たちは内部コミュニケーションのためにJQueryのチャットを実装しました。それは正常に動作しています。私たちはデータベースにユーザー状態を保存しています。ログインしたユーザーがログアウト時に状態をログアウトしたときに、DBに状態を保存します。Jqueryチャットのハウツートラックユーザーセッション

ユーザーがログアウトしたボタンをクリックせずにウィンドウを閉じるかPCをシャットダウンしても、チャットシステムにはログインしていないという問題があります。

ユーザーセッションを追跡することによって、各ユーザーがログインしているかどうかを確認する方法を教えてください。そのユーザーはまだアクティブ、ログインし、開いているブラウザを持っている、サーバーを教えてくれるメッセージ -

レッツのユーザーがサーバーに小さな「ピング」を送信します。

+0

あなたは15分の非活動を持っているユーザーのdbセッションを削除するphp関数を使用する必要があります。オンラインでログインしている人は気分的にログアウトします。この方法で1人だけがログインし、最後のアクティビティの16分後にチャットにアクセスしようとすると、ログインが開始されます – Val

答えて

2

最良の方法(ただし、最も安全または最も堅牢な)私はクッキー経由になり、これを達成するために思うだろう。 最初に、サーバー/ jqueryスクリプトは、ユーザーがログインしたときにブラウザーセッションが終了したときに削除されるCookieをコンピューターに置きます。ログアウトしたら、Cookieを削除します。したがって、ユーザーがログインしているかどうかを確認する場合は、Cookieを探します。

0

は、例えばCRONを使用するソリューションがあります。すべてのpingで、ユーザの現在の時刻への時刻をlast_activityに更新します。

CRONの場合、last_activityの時間が30秒を超えないとすべてのユーザーを確認できます。存在する場合は、ログオフした状態を設定します。そのため

単純なSQLクエリ:

UPDATE users 
    SET logged_in = false 
WHERE logged_in = true 
    AND UNIX_TIMESTAMP() - last_activity > 30