我有下面的代码,当用户打开页面时插入它,当刷新它时,,,当用户通过单击页面内的任何链接移动到另一个页面或单击X或按ALT+F4离开页面时,我想更新访问表设置leaveTime=$time……这是我的尝试:
session_start();
if (!isset($_SESSION["visits"]))
$_SESSION["visits"] = 0;
$_SESSION["visits"] = $_SESSION["visits"] + 1;
if ($_SESSION["visits"] > 1){
mysql_query("INSERT INTO najd_visit( visit_userId, visit_staticId, visit_page, visit_enterTime,visit_refreshTime)VALUES ('$userId', '$Sid', '$title','$Stime' ,'$date') ");
echo "You hit the refresh button!";}else{
mysql_query("INSERT INTO najd_visit( visit_userId, visit_staticId, visit_page, visit_enterTime)VALUES ('$userId', '$Sid', '$title', '$date') ");
echo "This is my site".$_SESSION["visits"];
}发布于 2012-06-09 20:48:14
不可能注册离开页面的用户。您可以根据用户的活动进行估计,但仅此而已。
但是,您可以做的是检测用户来自何处。如果用户在1:00从index.php开始,在1:02到达page2.php,您可以检查$_SERVER-superglobal以检测来自index.php的用户并更新该特定统计信息。
但是除此之外,知道用户什么时候离开你的页面并不是很有趣。
发布于 2012-06-09 20:48:37
PHP无法检测到访问者何时离开您的站点。
但是,您可以使用JavaScript检测页面unload事件,然后快速发出AJAX请求以记录离开...这并不总是有效的,因为网络延迟可能会导致您的脚本在浏览器开始加载下一个页面时被“跳过”。
要检测站点是否偏离了您自己页面上的链接,您可以让所有链接转到服务器上的一个小重定向脚本;这会记录访问者为另一个站点留下的内容。
在所有其他情况下,您只需假设在大约5分钟后访问的最后一个页面是“出发页面”。
发布于 2012-06-09 21:12:36
要检查用户何时离开,您可以这样做。
在客户端
每隔10秒向http://www.yousite.com/update_user.php?userID=*user_id*发出一次ajax请求。
这个脚本将更新mysql数据库中的一行,它应该看起来像这样。
UPDATE online_user SET last_check=NOW() WHERE user_id=$_GET['userID']在服务器端
每分钟启动一个cron。它将检查用户是否没有更新他们的行(为了安全起见,让我们花20秒)
SELECT user_id FROM online_user WHERE last_check <= *NOW() - 20 seconds*然后,你可以在任何地方编辑行-只要你想说用户的user_id在他的'last_check‘和+10秒之间,你可以每1到2秒做一个请求,如果你需要精确的话
https://stackoverflow.com/questions/10961061
复制相似问题