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)
是.任何浏览器或用户代理都可以选择不发送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)
是的,这是可能的,但对于常规请求来说,这种情况永远不会发生。
所有浏览器都会在请求中发送浏览器字符串,因此任何没有浏览器字符串到达的请求都来自其他程序。即使所有行为良好的机器人都会发送浏览器字符串,因此您也不必担心不会出现在搜索引擎中。