MySQL访问=访问+1,凝视行为


MySQL visit = visit +1 , staring behavior

我有一天的活动站点。在页面内部我有这个功能

public function visit_update($link){
    $query = mysql_query("UPDATE user SET visit = visit + 1 WHERE link = '"$link'" ");
}

每个用户都有一个唯一的链接。我只有一个活跃用户,因为测试(页面目前正在测试中)。

昨晚,对于一个活跃用户,数据库中有50次访问。今天我查的时候,有560次访问。我还激活了一个谷歌分析,它计算了大约50次访问和3次访问,因为我在3个不同的浏览器中进行测试。

该功能不会自行重复,并且只计算非页面所有者的访问者。这怎么可能?

更新:

我浏览了原始日志,找到了两个IP地址(66.249.66.87和66.249.72.210),这两个地址整晚都在访问我的网站,它们来自谷歌。如何在PHP中区分真实的web浏览器和类似假人的机器人?这可能吗?

您可以通过查看访问浏览器的用户代理来检测爬网程序,大多数网络爬网程序都表示它们是爬网程序。爬行器检测代码的示例可以在这里找到。

在更新站点访问计数之前,您应该检查用户会话。

public function visit_update($link){
      if(!empty($_SESSION['user_id'])
      {
            $query = mysql_query("UPDATE user SET visit = visit + 1 WHERE link = '"$link'" ");
      }
}

这将只更新您网站上活动成员的访问计数。

您可以使用来防止过于频繁地更新值

UPDATE user
SET visit = visit+1, last_visit = CURDATE()
WHERE link = $link AND last_visit < CURDATE() - INTERVAL 30 MIN