3

我创建了一个chatroom.php,并制作了target="_blank",只要用户单击房间的链接,它就会将用户引导到适当的房间。此外,当用户单击该链接时,我会将用户的昵称存储在数据库中,以显示该房间中用户的昵称。但是,当用户关闭房间的窗口时,它仍然显示该用户在线,这是不需要的。我需要一种方法,每当用户关闭聊天室之类的房间时,我都会将他/她从该房间中删除。我希望我说清楚了。对于某些房间,它应该像 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检查仍在聊天室中的用户。一旦用户关闭窗口,TASK 将检查并进行必要的更改。

使用会话检查在 PHP 中实现:

每次用户登录时,您都会设置$_SESSION['online'] = 1;- 会话变量仅为该用户设置,因此您不必担心冲突。但是,如果您想向所有用户显示此信息,您可能应该将用户的最后操作时间保存到数据库中。if($_SESSION['online'] == 1;) mysql_query('UPDATE user SET last_activity=NOW() WHERE id='.$user_id);或那样。

因此,通过这种方式,您可以跟踪聊天应用程序中的在线用户。

于 2012-09-13T16:49:51.970 回答