微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP未定义索引:HTTP_USER_AGENT

以下代码验证访问该站点用户代理,但是我收到错误.需要更新以适应没有设置用户代理的情况?

错误
PHP注意:未定义的索引:第7行的Utils.PHP中的HTTP_USER_AGENT

public static function detectbrowser()
    {
        $userAgent = strtolower($_SERVER['HTTP_USER_AGENT']);

        if (preg_match('/opera/',$userAgent)) {
            $name = 'opera';
        }
        elseif (preg_match('/webkit/',$userAgent)) {
            $name = 'safari';
        }
        elseif (preg_match('/msie/',$userAgent)) {
            $name = 'msie';
        }
        elseif (preg_match('/mozilla/',$userAgent) && !preg_match('/compatible/',$userAgent)) {
            $name = 'mozilla';
        }
        else {
            $name = 'unrecognized';
        }

        if (preg_match('/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/',$userAgent,$matches)) {
            $version = $matches[1];
        }
        else {
            $version = 'unkNown';
        }

        if (preg_match('/linux/',$userAgent)) {
            $platform = 'linux';
        }
        elseif (preg_match('/macintosh|mac os x/',$userAgent)) {
            $platform = 'mac';
        }
        elseif (preg_match('/windows|win32/',$userAgent)) {
            $platform = 'windows';
        }
        else {
            $platform = 'unrecognized';
        }

        return array(
            'name'      => $name,'version'   => $version,'platform'  => $platform,'userAgent' => $userAgent
        );
    }
User-Agent头是可选的.防火墙可能会过滤它,或者人们可能会配置他们的客户端来省略它.只需使用isset()检查是否存在.或者甚至更好,使用!empty()作为一个标题也不会有用:
public static function detectbrowser() {
    if(empty($_SERVER['HTTP_USER_AGENT'])) {
        return array(
            'name' => 'unrecognized','version' => 'unkNown','platform' => 'unrecognized','userAgent' => ''
        );
    }

    // your old code here
}

然而,由于您的所有代码似乎在空字符串中正常工作,并且还会生成“未知”值,您可以简单地更改以下行:

$userAgent = strtolower($_SERVER['HTTP_USER_AGENT']);

喜欢这个:

$userAgent = isset($_SERVER['HTTP_USER_AGENT'])
               ? strtolower($_SERVER['HTTP_USER_AGENT'])
               : '';

原文地址:https://www.jb51.cc/php/140004.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐