it-swarm.com.de

Kann $ _SERVER ['HTTP_USER_AGENT'] nicht gesetzt werden?

Ich habe gerade den error_log einer Website durchgesehen und einer der Fehler, der einige Male protokolliert wurde, ist:

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

Die betreffende Zeile in toro.php lautet:

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

Kann $_SERVER['HTTP_USER_AGENT'] nicht durch eine HTTP-Anfrage gesetzt werden?

24
Martin Bean

Ja, es ist möglich, dass dieser HTTP-Header vom Client gesendet (oder nicht gesendet) wird, und Sie sollten sich nicht darauf verlassen. Aus dem PHP-Handbuch:

Inhalt des User-Agent: Header der aktuellen Anfrage, falls vorhanden

Der richtige Code wäre also:

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

Ja. Jeder Browser oder Benutzeragent kann festlegen, dass der User-Agent-Header nicht gesendet wird. Wenn sie diesen Header nicht senden, wird $_SERVER['HTTP_USER_AGENT'] nicht gesetzt.

Verwenden Sie isset() , um sicherzustellen, dass $_SERVER['HTTP_USER_AGENT'] festgelegt ist.

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

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

Ja, das ist möglich, aber bei einer regulären Anfrage passiert das nie.

Alle Browser senden eine Browserzeichenfolge in der Anfrage, sodass jede Anfrage, die ohne eine solche eingeht, von einem anderen Programm stammt. Sogar alle gutmütigen Bots senden einen Browser-String, sodass Sie sich keine Sorgen machen müssen, dass Sie nicht in Suchmaschinen auftauchen.

4
Guffa

PHP docs sagt:

'HTTP_USER_AGENT' Inhalt des User-Agent: Header aus der aktuellen Anfrage, falls vorhanden .

(Relevanter Teil kursiv gedruckt) Es scheint also, dass er nicht immer gesetzt ist.

2
ChrisA

Ein Beispiel, bei dem HTTP_USER_AGENT undefiniert ist, ist, wenn die Anforderung vom 404-Seitenhandler von GoDaddy für Ihre Site stammt, für die Sie den Handler als eine Ihrer Seiten festgelegt haben.

1
Anono Mouser