gpt4 book ai didi

PHP 未定义索引 : HTTP_USER_AGENT

转载 作者:IT王子 更新时间:2023-10-28 23:59:42 24 4
gpt4 key购买 nike

以下代码验证了访问该站点的用户代理,但是我收到了错误消息。我需要更新什么来适应没有设置用户代理的场景?

错误PHP 注意:未定义索引:Utils.php 第 7 行中的 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 header 是可选的。防火墙可能会过滤它,或者人们可能会配置他们的客户端来忽略它。只需使用 isset() 检查它是否存在。或者更好的是,使用 !empty() 作为空 header 也没有用:

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'])
: '';

关于PHP 未定义索引 : HTTP_USER_AGENT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14130830/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com