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”中起作用的主要内容,如果未能解决你的问题,请参考以下文章

判定 android IOS

检测(移动)浏览器和设备

php获取设备型号

PHP 判断客户端是IOS还是Android

php判断所在的客户端

PHP$_SERVER的类型