我有一天活跃的网站。内页我有这个功能
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中的虚拟机器人?那可能吗 ?
答案 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