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

Mar*_*ean 25 php user-agent error-log

我刚刚浏览了一个网站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');
}
Run Code Online (Sandbox Code Playgroud)

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

Max*_*sky 27

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

User-Agent的内容:来自当前请求的标头(如果有)

所以正确的代码是:

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


And*_*ore 8

是.任何浏览器或用户代理都可以选择不发送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;
}
Run Code Online (Sandbox Code Playgroud)


Guf*_*ffa 5

是的,这是可能的,但对于常规请求来说,这种情况永远不会发生。

所有浏览器都会在请求中发送浏览器字符串,因此任何没有浏览器字符串到达​​的请求都来自其他程序。即使所有行为良好的机器人都会发送浏览器字符串,因此您也不必担心不会出现在搜索引擎中。