1

私の Web サイトには、mysql テーブルからユーザー データをチェックするログイン スクリプトがあります。テーブルにはいくつかの列 (名前、ユーザー名、パスなど) があり、(この質問のために) 最も重要なのは「ユーザー名」列と「オンライン」列です。「オンライン」列は BOOL 値です (オンラインが true の場合は 1、false の場合は 0)。ユーザーが正常にログインすると、$_SESSION 変数がテーブルのデータに設定され、次のようにテーブルの「オンライン」値を「0」から「1」に変更します。

mysql_query("UPDATE Members SET Online='1' Where UserName='$username' AND Online='0'");

スクリプトは「online」の値をチェックし、値が 1 の場合はログインできないようにし、ユーザーが既にログインしていることを示すメッセージをエコーし​​ます。

次に、サイトの各ページには、すべての $_SESSION 変数の設定を解除し、オンライン値を 1 から 0 に更新するスクリプトを実行する「ログアウト」リンクがあります。

mysql_query("UPDATE Members SET Online='0' Where UserName='$username' AND Online='1'");

ここで問題が発生します。ユーザーがブラウザー ウィンドウを閉じると、php の機能によりセッションが自動的に終了します。ただし、ブラウザが閉じている場合はテーブルも更新したいと思います。そうしないと、ユーザーがブラウザーを閉じたときに、オンラインの値が 1 のままであるため、ユーザーは再度ログインできなくなります。onunload または onbeforeunload を使用すると、更新またはページを変更します。おそらくある種のセッションタイムアウトを使用する必要があることはわかっていますが、私が見たすべての回答は、それを行う方法を完全に説明しているわけではありません. 私は通常、人々がコードがどのように機能するか、またはどのように使用されることになっているのかを説明せずにコードを投稿するのを見ます. 誰かがこれで私を助けることができれば、私はそれを大いに感謝します.

少し早いですがお礼を。

4

1 に答える 1

0

AJAX を使用してスクリプトを自動更新し、最後のアクティビティが 5 分を超える場合 -> SQL クエリを使用する必要があります。

于 2013-08-24T19:06:28.290 に答える