0

ユーザーがログインしている場合、クエリを実行してユーザーが現在オンラインであることを示すため、ステータスは「オン」です。

オンライン:

$sqlonline = mysql_query("INSERT INTO useronline VALUES('$_SESSION[id]', '$uname', '$ip', 
'$time', '', 'ON')");

ユーザーがログアウトしている場合は、クエリを更新して、ユーザーがオフラインであることを示します

オフライン

$q=mysql_query("UPDATE useronline SET status = 'OFF',  time_out  = '$time' WHERE 
session_id ='$_SESSION[id]'");

さて、私の質問..ユーザーがブラウザを閉じた場合、クエリを status = 'OFF'に更新する方法はありますか? ユーザーがブラウザーを閉じた場合、ユーザーが現在オンラインになっていることが表示されます。ユーザーがブラウザを閉じた場合、ユーザーが現在「オフライン」であることを示したい

誰でも私にアイデアを与えることができます!
私の悪い英語を申し訳ありません:(

4

4 に答える 4

1

ユーザーがブラウザーのタブを閉じようとしているときに、サーバーに何かを送信する信頼できる方法はありません。ユーザーからの最後のリクエストの時刻をデータベースに書き込む必要があります。この時間が十分に過ぎている場合、それはユーザーがいなくなったことを意味します。

于 2012-05-05T15:08:19.660 に答える
0

Javascript でこれを試してみて、ウィンドウを閉じるイベントを確認することもできますが、それがサポートされているかどうかはブラウザー次第です。

代わりに、ユーザーがサイトにアクセスしたときにログを記録するテーブルを作成し、cron ジョブを実行して、ユーザーがページを変更してからの経過時間を確認することができます。X 分以上経過している場合は、そのユーザーのステータスをオフラインに設定します。

于 2012-05-05T15:10:35.273 に答える
0

ユーザーがウィンドウを閉じている場合、db に更新することはできません。

db を定期的にチェックすることで更新できます。

データベースに last_updated_time という名前のフィールドを作成できます。ユーザーがログインすると、setInterval() または setTimeOut() メソッドを使用して、ユーザーのページから数 (3 または 5) 秒ごとにこの列の現在の時刻を更新します。

ユーザーがウィンドウを閉じた場合、last_updated_time は更新されません。

オンライン/オフラインの状態を表示したいページで、現在時刻とユーザーの last_updated_time の時差を確認します。時差が大きい場合は、ユーザー ステータスを OFF に更新し、オフライン ステータスを表示します。

于 2012-05-05T15:24:02.257 に答える