PHP header() Funktion
Definition und Verwendung
Die Funktion header() sendet den ursprünglichen HTTP-Header an den Client.
Es ist wichtig zu erkennen, dass die Funktion header() vor dem Senden jeder tatsächlichen Ausgabe aufgerufen werden muss (in PHP 4 und höher können Sie den Output-Cache verwenden, um dieses Problem zu lösen):
<html> <?php // Fehler in den Ergebnissen // Es gibt bereits ausgegebene Ausgaben vor dem Aufruf von header() header('Location: http://www.example.com/'); ?>
Syntax
header(string,replace,http_response_code)
Parameter | Beschreibung |
---|---|
string | Erforderlich. Bestimmt die zu sendende Header-Zeichenkette. |
replace |
Optional. Zeigt an, ob der Header die vorherige Header ersetzen soll oder einen zweiten Header hinzufügen soll. Standardmässig ist true (ersetzen). false (erlaubt mehrere Header desselben Typs). |
http_response_code | Optional. Setzen Sie den HTTP-Responsecode auf den angegebenen Wert. (Verfügbar ab PHP 4 und höher)} |
Hinweise und Anmerkungen
Anmerkung:Von PHP 4.4 an verhindert diese Funktion das Senden mehrerer Header gleichzeitig. Dies ist ein Schutzmaßnahme gegen Header-Injektionsangriffe.
Beispiel
Beispiel 1
<?php // Datum in der Vergangenheit header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Cache-Control: no-cache"); header("Pragma: no-cache"); ?> <html> <body> ... ...
Anmerkung:Der Benutzer kann einige Optionen einstellen, um die Standard-Cache-Einstellungen des Browsers zu ändern. Durch Senden der obigen Header können Sie alle diese Einstellungen überschreiben und den Browser anweisen, nicht zu cachen!
Beispiel 2
Weisen Sie dem Benutzer an, eine generierte PDF-Datei zu speichern (der Content-Disposition-Header wird verwendet, um einen empfohlenen Dateinamen bereitzustellen und den Browser anzuweisen, einen Speicherdialog anzuzeigen):
<?php header("Content-type:application/pdf"); // Der Dateiname des Dateis wird als downloaded.pdf header("Content-Disposition:attachment;filename='downloaded.pdf'"); // PDF-Quelle in original.pdf readfile("original.pdf"); ?> <html> <body> ... ...
Anmerkung:Microsoft IE 5.5 hat einen Bug, der diese Mechanismen blockiert. Durch das Upgrade auf Service Pack 2 oder höher kann dieser Bug behoben werden.