header

(PHP 3, PHP 4 )

header -- Sendet einen HTTP-Header

Beschreibung:

int header ( string string)

Die header()-Funktion wird zu Beginn einer HTML-Datei benutzt um HTTP-Anfangsinformationen zu senden. Siehe HTTP 1.1 Spezifikationen für weitere Informationen. Hinweis: Beachten sie, dass die header()-Funktion aufgerufen werden muss, bevor irgendeine Ausgabe durch normale HTML-Tags oder PHP erzeugt wird. Es ist ein häufig anzutreffender Fehler, per include() Programm-Code einzubinden (bzw. per auto_prepend) oder Leerzeichen oder -zeilen vor dem Code stehen zu haben, die bereits Ausgaben bewirken (auch wenn diese leer sind) bevor header() aufgerufen wird.

Es gibt zwei Spezialfälle von Header-Aufrufen. Der Erste ist der "Location"-Header. Es wird nicht nur der Header an den Browser geschickt, der Apache erhält auch noch den Status-Code REDIRECT. Aus Sicht des Skript-Schreibers ist das nicht wichtig, aber für alle, die die Internas von Apache verstehen wollen, ist dies von Belang.

header ("Location: http://www.example.com");  // Umleitung des Browsers
exit;  // Sicher stellen, das nicht trotz Umleitung nachfolgender Code ausgeführt wird.

Der zweite Spezialfall ist ein Header der mit der Zeichenfolge "HTTP/" beginnt (Groß-/Kleinschreibung ist egal). Falls sie z.B. die Dokument-Fehler-Anweisung 404 des Apache auf ein PHP-Skript zeigen lassen, ist es gut, wenn dieses Skript einen 404-Fehler erzeugt. In diesem Skript sollten sie also zuerst stehen haben:

header ("HTTP/1.0 404 Not Found");

PHP-Skripte erzeugen oft dynamisches HTML, das weder vom Browser noch von irgendeinem Proxy zwischen Web-Server und Client-Browser gepuffert ("gecached") werden soll bzw. darf. Bei vielen Proxies und Browsern kann das Cachen unterbunden werden und zwar mit:

header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");    // Datum der
Vergangenheit
header ("Last-Modified: " . gmdate ("D, d M Y H:i:s") . " GMT"); 
                                                      // immer geändert
header ("Cache-Control: no-cache, must-revalidate");  // HTTP/1.1
header ("Pragma: no-cache");                          // HTTP/1.0

Siehe auch: headers_sent().