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

时间:2012-07-13 11:25:30

标签: php mysql

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

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中的虚拟机器人?那可能吗 ?

3 个答案:

答案 0 :(得分:1)

您可以通过查看访问浏览器的用户代理来检测抓取工具,大多数网络抓取工具都表明他们是抓取工具。可以找到爬虫检测代码的示例here

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

您可以通过以下方式阻止更新值:

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