User Agent过滤器有时仅在“ strpos”中起作用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了User Agent过滤器有时仅在“ strpos”中起作用相关的知识,希望对你有一定的参考价值。
我只想过滤掉所有Facebook爬虫,以便它们不会出现在即将发布的统计信息中,但是在我检查了数据库记录后,我仍然找到了一些Facebook爬虫(我使用的是Cloudflare防火墙,而我只允许使用Facebook爬虫,所有其他爬虫被其他用户代理阻止)
我不确定“ strpos”是否正确?
if (strpos($_SERVER["HTTP_USER_AGENT"], "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)") === false &&
strpos($_SERVER["HTTP_USER_AGENT"], "facebookexternalhit/1.1") === false){
$database->query("INSERT INTO `phits` (`type`, `user_id`, `date`, `ip`) VALUES ('profile', {$profile_account->user_id}, '{$date}', '{$ip}')");
}
答案
if (strpos($_SERVER["HTTP_USER_AGENT"], "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)") !== false ||
strpos($_SERVER["HTTP_USER_AGENT"], "facebookexternalhit/1.1") !== false || strpos($_SERVER["HTTP_USER_AGENT"], "Mediapartners-Google") !== false){
}
else{
$database->query("INSERT INTO `phits` (`type`, `user_id`, `date`, `ip`) VALUES ('profile', {$profile_account->user_id}, '{$date}', '{$ip}')");
}
以上是关于User Agent过滤器有时仅在“ strpos”中起作用的主要内容,如果未能解决你的问题,请参考以下文章