记录用户当前所在的页面

时间:2011-01-02 02:42:40

标签: php

我的网站上有一个聊天室。我想在聊天室中编制一个在线用户列表。

最好的方法是什么? 是记录用户访问的最后一页,如果是那个页面,它们是否在聊天室中?

可以使用哪些不同的技术来做到这一点?

由于

4 个答案:

答案 0 :(得分:1)

如果您在聊天应用程序中使用Comet,那么您将拥有一个向服务器开放的通道,该通道将作为开放HTTP请求绑定到客户端。

只要该请求是开放的,用户就在房间里。如果请求关闭,则用户不再在房间内。

答案 1 :(得分:0)

Yshout每隔6秒对yshout / yshout.php执行一次AJAX请求。在yshout.php中添加一些代码,以跟踪它在过去10秒内看到的唯一身份用户数,并且应该设置。

修改:您想要聊天室中活跃的所有人的名称吗?我很想为此添加一个数据库表 - 每次他们点击yshout.php时,添加一个名称+时间戳条目并删除超过10秒的所有条目。然后使用GROUP BY名称进行查询以获取唯一用户。

编辑2 聊天客户端已经每隔六秒就在yshout.php上发布一个AJAX请求。您所要做的就是在'if(isset($ _ POST ['reqFor']))'子句(响应AJAX请求的位)中添加一段PHP代码。

保持简短!请记住,它会在每分钟150次的事情上受到重创。

答案 2 :(得分:0)

我会使用sessions javascript库来记录用户访问过的每个页面,然后通过javascript在聊天客户端中检索这些值。

  • 在每个页面上包含库。
  • 在sessvars对象中的
  • ,创建一个数组sessvars.visited = []; [如果sessvars.visited不是数组]
  • 现在在每个页面上执行类似sessvars.visited[] = location.href
  • 的操作
  • 在聊天客户端页面上,使用javascript迭代sessvars.visited以获取所有网址。例如,要使用Jquery列出HTML中的URL,请执行以下操作:

var urlList = '';
$.each(sessvars.visited, function(key, value){
    urlList += value + '<br />';
})

注意:Sessvars是具有非常大容量的Cookie的替代品(在大多数浏览器中为10mb)。但是,会话数据仅在活动窗口中可用。窗口关闭后信息丢失,据我所知,无法从其他窗口查询。因此,如果聊天在不同于他们浏览的窗口中打开,则无法使用。

答案 3 :(得分:0)

您应该每隔x秒向服务器发出一次javascript请求。

您必须这样做(用于检索正在进行的聊天对话和参与的用户列表)。

在服务器端,您知道因此请求而在用户上的内容。您只需记录这些请求。