如何用PHP / Laravel检查用户是否来自Facebook浏览器

时间:2017-08-04 13:25:27

标签: php facebook laravel

我试图检查用户是否来自应用内Facebook浏览器,因为如果它是Facebook浏览器,我网站上的某些功能将无法正常工作。

我发现了一些JS片段,但我想用PHP检查它,因为我还用PHP过滤了一些其他东西,并且不想使用JS。

我使用的是Laravel 5.4 Framework,但普通的PHP解决方案也很棒。

我已经使用Facebook浏览器和firefox / chrome浏览器检查了我的HTTP_USER_AGENT,并注意到了一些差异。

firefox给了我这个回复:

Mozilla/5.0 (Windows NT 10.0; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0

和facebook这个:

Mozilla/5.0 (Linux; Android 6.0; HUAWEI VNS-L31 Build/HUAWEIVNS-L31; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/56.0.2924.87 Mobile Safari/537.36 [FB_IAB/FB4A;FBAV/116.0.0.17.69;] <<-- Important

我注意到最后:[FB_IAB/FB4A;FBAV/116.0.0.17.69;]

所以我写了这段代码:

        if (
            strpos($_SERVER["HTTP_USER_AGENT"], "FB_IAB") !== false ||
            strpos($_SERVER["HTTP_USER_AGENT"], "FB4A") !== false ||
            strpos($_SERVER["HTTP_USER_AGENT"], "FBAV") !== false
        ) 
        {
            return "its fb";
        }
        else {
            return "its not fb";
        }

是的,它对我有用。但我不知道它是否适用于其他类似的用户。我也没有使用http_header - 信息。那么你认为我对这段代码安全吗?或者我需要改变一些东西吗?

感谢您的帮助,抱歉我的英语不好!

1 个答案:

答案 0 :(得分:0)

我使用 https://github.com/hisorange/browser-detect 检查 Facebook APP 浏览器

use hisorange\BrowserDetect\Parser as Browser;

$userAgent = Browser::getUserAgentString();
$isFB = stripos($userAgent, 'FBAV') > 0;