如何检测“;访问时间”;按IP地址


How to detect the "length of visit" by IP Address?

我知道可以使用网站访问者的IP地址来检测他们的访问长度。但我怎么知道他们使用PHP脚本在我的网站上在线的时间是多少小时甚至几分钟呢?

不,不可能检测到准确的"停留在您的网站上的时间",因为您永远不知道访问者何时关闭最后一页。

但你可以通过计算一天内第一次访问和最后一次访问之间的时间或其他方式来获得大致的时间购买。你可以节省每次访问的时间和"从ip",然后做一些计算。

此外,最好的解决方案可能使用一些第三方分析服务,例如谷歌分析。它是免费的,而且非常强大。

我不认为您可以收集准确的数据,但可以这样做。

a) 参照IP地址确定用户何时登录。

b) 检测用户何时离开网站。

首先,您可以通过将ip地址存储在数据库或任何您喜欢的东西中,来创建一个浏览网站的ip地址记录。

为了确定谁在浏览你的网站,你可以尝试在用户进入网站后立即获取他的ip地址,并将其与登录时间一起存储在某个地方。例如,您可以将它与以下记录一起存储在数据库中。

ipAddress |  LoginTime  |  LogoutTime

一旦有人进入你的网站,你就会将ipAddress与登录时间一起存储在你的记录中。但在存储之前,您需要确保不存在重复项。即在存储之前检查该ipAddress是否已经存在。如果它存在,那就意味着用户还没有关闭你的网站。

现在您需要确定用户何时离开您的网站,您可以使用window.onunload通过javascript来确定用户何时退出您的网站。您可以进行ajax调用来了解用户何时离开网站。

$(window).bind('beforeunload', function() {
    // ajax call
    // write to db..
});

这样你就可以知道用户何时进入和离开你的网站。我不认为就是这样,但这应该有助于你理解构建自己的逻辑。希望这对你有所帮助。

实现这一点的一种简单方法是通过Ajax。

为用户打开或启动会话,并让Ajax每分钟对服务器进行一次ping。

在日志、数据库或平面中,您可以记录该ip会话的开始时间,并记录最后一次ping时间。

如果你一直记录最后一次ping的时间,那么你应该接近于内。用户访问时间的分钟数。

更新:

您可以对隐藏的iframe执行同样的操作,每60秒进行一次元刷新。答案的要点是提出一种替代技术,通过AJAX给出例子来帮助海报。当然,还有其他方法可以实现这一点。

一种完全不同的方法是访问会话存储。

如果您可以访问存储会话的文件夹,则可以获得最近更新或最旧会话的列表。如果某个东西在一段时间内处于非活动状态,您将能够通过会话文件未动的时间来判断它处于非活动的时间。

然后将由您的应用程序/网站决定如何在用户在网站上时保持会话文件的更新。如果你将他们的IP存储在他们的会话文件中,你可以从文件中再次读取。

这也将取决于服务器重置会话文件的频率,但如果这些事情在您的控制范围内,这是另一种值得考虑的技术。