1

重複の可能性:
ユーザーがログアウトをクリックせずにブラウザを閉じると、セッションが破棄または設定解除される

クライアント用のチャット スクリプトを実装しています。私が直面している問題は、ユーザーがログアウトした場合、ユーザーがログインするとステータスが1に設定されるため、チャットステータスをオフラインに終了するようにプログラムできることですが、ユーザーがブラウザを閉じるとどうなるかについて混乱していますログアウトせずに。この場合、ユーザーがログアウトしていないため、データベースのステータスは 1 のままです。

質問を理解してください。助けてください。

4

2 に答える 2

2

Cookie ベースのセッションを使用している場合は、タイムアウトを非常に積極的に設定してください。

http://www.php.net/manual/en/session.configuration.php#ini.session.cookie-lifetime

また、JavaScript を介してブラウザーのアンロード イベントにフックし、セッションを破棄するサーバーへの迅速な AJAX 要求をトリガーすることもできます。

http://eureka.ykyuen.info/2011/02/22/jquery-javascript-capture-the-browser-or-tab-closed-event/

ただし、このクライアント側の実装には依存しません。ブラウザーがクラッシュしたり、ユーザーが強制的に閉じたりすると、イベントがトリガーされない可能性があります。ブラウザー自体もonunload、ユーザーを考慮して、イベントが完了するまでの時間を制限する場合があります。この 2 つの方法を組み合わせると、おそらく最も効果的です。

于 2012-07-31T18:21:50.717 に答える
2

セッション Cookie の有効期限が切れたとき、または非アクティブな状態が一定時間続いたときに、データベースでユーザーをオフラインに設定します。

これは、リクエストごとに確認できます。

于 2012-07-31T18:23:45.583 に答える