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.