是否可以不设置 $_SERVER['HTTP_USER_AGENT']?

2022-08-30 16:38:05

我刚刚浏览了一个网站,其中一个已经记录了几次的错误是:error_log

[21-Jun-2011 12:24:03] PHP Notice: Undefined index: HTTP_USER_AGENT in /home/ukevents/public_html/lib/toro.php on line 130

这与 toro .php 中的行有关::

private function ipad_request() {
    return strstr($_SERVER['HTTP_USER_AGENT'], 'iPad');
}

是否可以不由 HTTP 请求设置?$_SERVER['HTTP_USER_AGENT']


答案 1

是的,这是可能的,这是客户端发送(或未发送)的HTTP标头,您不应该依赖它。从 php 手册:

用户代理的内容:当前请求中的标头(如果有)

所以正确的代码是:

private function ipad_request() {
    return isset($_SERVER['HTTP_USER_AGENT']) && strstr($_SERVER['HTTP_USER_AGENT'], 'iPad');
}

答案 2

是的。任何浏览器或用户代理都可以选择不发送标头。如果他们不发送该标头,则不会设置。User-Agent$_SERVER['HTTP_USER_AGENT']

使用 isset() 确保已设置。$_SERVER['HTTP_USER_AGENT']

private function ipad_request() {
  if(!isset($_SERVER['HTTP_USER_AGENT'])) return false;

  return strstr($_SERVER['HTTP_USER_AGENT'], 'iPad') !== false;
}

推荐