Возможно ли, чтобы параметр $_SERVER ['HTTP_USER_AGENT'] не был установлен?
Я только просматривал веб-сайт 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-запросом?
Ответы
Ответ 1
Да, возможно, это HTTP-заголовок, отправленный (или не отправленный) клиентом, и вы не должны полагаться на него. Из руководства php:
Содержимое заголовка User-Agent: от текущего запроса, если есть
Итак, правильный код:
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;
}
Ответ 3
Да, это возможно, но это никогда не происходит для обычного запроса.
Все браузеры отправляют строку запроса в запрос, поэтому любой запрос, который поступает без него, поступает из какой-либо другой программы. Даже все богеры, которые ведут себя хорошо, отправляют строку браузера, поэтому вам не нужно беспокоиться о том, чтобы не появляться в поисковых системах.
Ответ 4
В документах PHP говорится:
'HTTP_USER_AGENT' Содержимое заголовка User-Agent: из текущего запроса, если он есть.
(соответствующая часть выделена курсивом), поэтому, возможно, он не всегда будет установлен.
Ответ 5
Пример, где HTTP_USER_AGENT undefined - это запрос, поступающий с обработчика страницы GoDaddy 404 для вашего сайта, на котором вы установили обработчик как один из ваших страниц.