访客柜台


visitor counter

我在用户打开页面和刷新页面时插入了以下代码,,,我想更新访问表设置离开时间=$time当用户通过单击页面内移动到另一个页面的任何链接或单击 X 或按 Alt+F4 离开页面时......这是我的尝试:

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"];
}

无法注册离开页面的用户。您可以根据用户的活动进行估计,但仅此而已。

但是,您可以做的是检测用户来自哪里。如果用户从 index.php 1:00 开始,在 1:02 到达 page2.php则可以检查 $_SERVER-superglobal 以检测用户来自索引.php并更新该特定统计信息。

但除此之外,知道用户何时离开您的页面并不有趣。

PHP 无法检测到访问者何时离开您的网站。

但是,您可以使用JavaScript来检测页面unload事件,然后快速发出AJAX请求以记录离开...这并不总是有效,因为网络延迟可能会导致您的脚本在浏览器开始加载下一页时被"跳过"。

要检测网站偏离你自己页面上的链接,你可以让你的所有链接都转到服务器上的一个小重定向脚本;这记录了访问者离开另一个网站。

在所有其他情况下,您只需要假设大约 5 分钟后访问的最后一页是"出发页面"。

如果您想创建仅访问计数器,请参阅本教程,它非常适合您http://talkerscode.com/webtricks/create-a-simple-pageviews-counter-using-php-and-mysql.php

首先,您必须创建数据库

CREATE TABLE `pageview` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`page` text NOT NULL,
`userip` text NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1

总视图

CREATE TABLE `totalview` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`page` text NOT NULL,
`totalvisit` text NOT NULL,
 PRIMARY KEY (`id`)
 ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1

每当新访问者访问网页时更新表格

$user_ip=$_SERVER['REMOTE_ADDR'];
$check_ip = mysql_query("select userip from pageview where page='yourpage' and userip='$user_ip'");
if(mysql_num_rows($check_ip)>=1)
{
}
else
{
  $insertview = mysql_query("insert into pageview values('','yourpage','$user_ip')");
  $updateview = mysql_query("update totalview set totalvisit = totalvisit+1 where page='yourpage' ");
}

仅此而已

要检查用户何时离开,您可以执行此操作。

在客户端

每 10 秒对 http://www.yousite.com/update_user.php?userID=*user_id* 执行一个 ajax-request 。

此脚本将更新 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*

然后,您可以在任何您想要的地方编辑行,说出对应于"last_check"和 +10 秒之间剩余user_id的用户,如果您需要精确,您可以每 1 或 2 秒执行一次请求