我创建了一个chatroom.php,并制作了target="_blank",只要用户单击房间的链接,它就会将用户引导到适当的房间。此外,当用户单击该链接时,我会将用户的昵称存储在数据库中,以显示该房间中用户的昵称。但是,当用户关闭房间的窗口时,它仍然显示该用户在线,这是不需要的。我需要一种方法,每当用户关闭聊天室之类的房间时,我都会将他/她从该房间中删除。我希望我说清楚了。对于某些房间,它应该像 logout.php 一样工作。我怎样才能做到这一点?
谢谢
我创建了一个chatroom.php,并制作了target="_blank",只要用户单击房间的链接,它就会将用户引导到适当的房间。此外,当用户单击该链接时,我会将用户的昵称存储在数据库中,以显示该房间中用户的昵称。但是,当用户关闭房间的窗口时,它仍然显示该用户在线,这是不需要的。我需要一种方法,每当用户关闭聊天室之类的房间时,我都会将他/她从该房间中删除。我希望我说清楚了。对于某些房间,它应该像 logout.php 一样工作。我怎样才能做到这一点?
谢谢
看看这个onBeforeClose
事件。
window.onbeforeclose = function(){
// make a call to PHP saying user is singing off.
};
或者,您可以使用“空闲”超时(如果用户在 X 分钟内没有说任何话,则自动将其注销。)
为此,您需要创建一个自动任务以使用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);
或那样。
因此,通过这种方式,您可以跟踪聊天应用程序中的在线用户。