如何正确检查用户代理在php中是否为空

时间:2019-07-12 16:12:16

标签: php

我想确保我的网站用户仅使用chrome和firefox。 我的托管公司报告说,空用户代理附带的用户对我的网站造成了不必要的打击。 这不是DOS攻击。

我只想用空用户代理阻止所有用户。

当前代码检查并确保只有Firefox和Chrome浏览器 可以访问我的网站。

我的问题是如何检查用户代理为空的用户。 这是我的检查。是吗?

//check if useragent is empty
if($agent==''){
echo "user agent is empty. access block";
}

以下是到目前为止的代码,可确保仅允许使用Firefox和chrome浏览器

$arr_browsers = ["Firefox", "Chrome"];
$agent = $_SERVER['HTTP_USER_AGENT'];

$user_browser = '';
foreach ($arr_browsers as $browser) {
    if (strpos($agent, $browser) !== false) {
        $user_browser = $browser;
        break;
    }   
}


//check if the browser is not in array

if ( ! ( in_array($user_browser, $arr_browsers) ) ) {

echo "you browser are not allowed. This work fine";

}

1 个答案:

答案 0 :(得分:0)

您对空用户代理的测试对我来说很好。

在第二个代码中,无需检查$user_agent是否在数组中。如果不是用来初始化它的空字符串,则它必须是数组中的值之一。所以只要写

if ($user_browser == '') {
    echo "your browser is not allowed";
}