Возможно ли, чтобы параметр $ _SERVER не был установлен?

Я только что просмотрел 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'); } 

Возможно ли, что параметр $_SERVER['HTTP_USER_AGENT'] не задан HTTP-запросом?

Related of "Возможно ли, чтобы параметр $ _SERVER не был установлен?"

Да, это возможно, это HTTP-заголовок, отправленный (или не отправленный) клиентом, и вы не должны полагаться на него. Из руководства php:

Содержимое заголовка User-Agent: от текущего запроса, если есть один

Таким образом, правильный код:

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

Да. Любой браузер или пользовательский агент могут выбрать не отправлять заголовок 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; } 

Да, это возможно, но это никогда не бывает для регулярного запроса.

Все браузеры отправляют строку запроса в запрос, поэтому любой запрос, который поступает без него, поступает из какой-либо другой программы. Даже все боты, которые ведут себя хорошо, отправляют строку браузера, поэтому вам не нужно беспокоиться о том, чтобы не появляться в поисковых системах.

Документы PHP говорят:

'HTTP_USER_AGENT' Содержимое заголовка User-Agent: от текущего запроса, если таковой имеется .

(соответствующая часть, выделенная курсивом), поэтому, похоже, она не всегда может быть установлена.

Пример, когда HTTP_USER_AGENT не определен, – это запрос, поступающий с обработчика страницы Go4addy 404 для вашего сайта, где вы задали обработчик одной из ваших страниц.