检测用户出口站点

时间:2013-06-02 17:47:48

标签: php javascript session detect

我强烈要求检测用户何时离开我的网站,以便准确记录相关用户的会话长度。我想到了几个可能的解决方案:

我首先想到我可以使用onbeforeunload并发送一个简单的ajax来记录最后一个活动,但是实践告诉我的是onbeforeunload现在是不可靠的,因为它不是跨浏览器所以使用它是个坏主意。

然后我想我可以使用cookie记录用户的会话长度,每次用户显示活动时分别增加cookie值。这里的问题是我无法检测到哪个是用户的最后一个活动,也是我可以安全地插入会话长度的唯一可能方式,并且知道它是准确的是当用户没有登录很长一段时间并且cookie的值将是最后一个会话长度。这对我来说不合适,因为许多用户可能只打开一次网站而不再访问它(例如),然后就不会记录这些用户。

有没有人能解决这个问题?我似乎已经搜索过,但我找到的答案都没有令人满意。

提前谢谢!

4 个答案:

答案 0 :(得分:1)

您无法确定用户何时离开您的网站,这基本上不受互联网基础技术的支持。您所能做的就是告诉会话到期前最后一次请求的时间。

答案 1 :(得分:1)

您可以使用Javascript进行投票。例如,如果您有一个使用Ajax加载新信息的滚动条文本或图像滚动条,您可以使用这些请求的时间来猜测最后一个活动。您也可以对它进行专门的请求,但对访问者来说是浪费带宽,他们可能不喜欢这种严格监控的想法。

您还可以测量页面视图之间的时间,并将最后一页视图(退出页面)排除在等值之外。

答案 2 :(得分:0)

如果您需要为特定用户执行此操作,那么最好的方法是每隔60秒执行一次Ajax请求,并在数据库中记录其会话的时间戳。当您测量响应时,您可以将超出合理截止值的任何内容分类为“左”(例如,对于典型的浏览器会话,为20分钟)。

如果您不需要为个人用户提供此数据,并且只想获得访问者的平均指标,那么您也可以使用Google Analytics。

答案 3 :(得分:0)

好的,根据给定的答案判断,以便将带宽浪费减少到最低限度,这就是我决定做的事情:

if('onbeforeunload' in window){
    window.onbeforeunload = function(){ Send last activity ajax call }
}else{
    setInterval(Send activity update, 30000);
}

感谢您的回复!

相关问题