0

我一天活跃网站。内页我有这个功能

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),它们整晚都在访问我的网站,它们来自谷歌。如何区分真正的 Web 浏览器和 PHP 中的虚拟机器人?那可能吗 ?

4

3 回答 3

1

您可以通过查看访问浏览器的用户代理来检测爬虫,大多数网络爬虫表明它们是爬虫。可以在此处找到爬虫检测代码的示例。

于 2012-07-13T14:25:36.583 回答
0

您可以通过以下方式防止过于频繁地更新值:

UPDATE user
SET visit = visit+1, last_visit = CURDATE()
WHERE link = $link AND last_visit < CURDATE() - INTERVAL 30 MIN
于 2012-07-13T11:51:11.327 回答
0

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

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

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

于 2012-07-13T11:33:13.440 回答