3

私はchatroom.phpを作成し、ユーザーが部屋のリンクをクリックするたびにユーザーを適切な部屋に誘導するtarget ="_blank"を作成しました。また、ユーザーがそのリンクをクリックすると、ユーザーのニックネームがデータベースに保存され、その部屋のユーザーのニックネームが表示されます。ただし、ユーザーが部屋のウィンドウを閉じると、ユーザーがオンラインであることが表示されますが、これは望ましくありません。ユーザーがchatroom?name = bookなどの部屋を閉じるたびに、その部屋からユーザーを削除する方法が必要です。私は自分自身を明確にしたと思います。特定の部屋ではlogout.phpのように機能するはずです。どうやってやるの?

ありがとう

4

2 に答える 2

2

onBeforeCloseイベントをご覧ください。

window.onbeforeclose = function(){
  // make a call to PHP saying user is singing off.
};

または、「アイドル」タイムアウトを使用することもできます (ユーザーが X 分間何も言わなかった場合は、自動ログオフします)。

于 2012-09-13T16:43:53.600 に答える
1

これを行うには、SESSION_Checkingまたは ACTIVITY_Monitoringを使用して、CHAT ROOM にまだいるユーザーをチェックする自動タスクを作成する必要があります。ユーザーがウィンドウを閉じると、タスクはチェックして必要な変更を加えます。

SESSION チェックを使用して PHP に実装するには:

ユーザーがログインするたびに$_SESSION['online'] = 1;、セッション変数はこのユーザーに対してのみ設定されるため、競合を心配する必要はありません。しかし、この情報をすべてのユーザーに表示したい場合は、おそらくユーザーの最後のアクション時刻を DB に保存する必要があります。if($_SESSION['online'] == 1;) mysql_query('UPDATE user SET last_activity=NOW() WHERE id='.$user_id);またはそのように。

このようにして、チャットアプリケーションでオンラインユーザーを追跡できます。

于 2012-09-13T16:49:51.970 に答える