2012-07-13 80 views
0

我活跃了一天的网站。内页我haw功能MySQL访问=访问+1,凝视行为

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

每个用户都有一个独特的链接。由于测试(我目前正在测试页面),我只有一个活跃用户。

昨晚为一个活跃的用户就被计入数据库50人次。今天,当我检查它时,有560次访问。我也激活了一个谷歌分析,并且在那里有50个访问者和3个访问者,因为我正在3个不同的探索者中进行测试。

功能DOS不再重复了自我,只计算不属于网页的业主游客。这怎么可能?

更新:

我去阵痛原木,并发现那位指出,在访问我的网站通宵两个IP地址(66.249.66.87和66.249.72.210),他们是来自谷歌。如何区分真正的Web浏览器和PHP中的虚拟机器人?那可能吗 ?

+2

无法在您调用此方法的上下文中没有代码的情况下说。但是,可以说你要调用560次,要么是因为错误的循环或分支逻辑,要么是因为错误的重写规则,或者其他原因。 – 2012-07-13 11:27:39

+0

另外,不要依靠Google Analytics(分析)来确定脚本被调用的次数。 GA做了很多事情来限制它通过重定向等方式注册的次数。相反,您必须直接查看您的网络日志。 – 2012-07-13 11:30:07

+0

谷歌机器人有可能检查页面,但没有显示在分析中?我如何阻止他们更新访问? – munge83 2012-07-13 11:30:25

回答

1

您可以通过查看访问浏览器的用户代理最网络爬虫表明它们是一个履带式爬行检测。爬行者检测代码的一个例子可以在here找到。

0

你应该更新的网站访问数前检查用户会话。

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

这将只为您的网站活跃会员更新访问计数。

+0

该页面必须是公开的,并计算那些在该特定页面的所有者中没有被冻结的人。 – munge83 2012-07-13 11:40:31

0

,你可以防止与更新值过于频繁:

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

然后我不会真正的游客数。我需要知道什么时候机器人会检查页面和真实浏览器。 – munge83 2012-07-13 12:01:18