Heim  >  Artikel  >  php教程  >  Funktionskopf – Seitensprung

Funktionskopf – Seitensprung

高洛峰
高洛峰Original
2016-12-20 10:26:231474Durchsuche

Funktions-Header-Funktionen:
Seitensprung

HTTP-Header-Informationen
Header-Informationen haben viele Funktionen, von denen die wichtigsten die folgenden sind:
1. Springen
Wenn danach Der Browser erhält Standort: xxxx in den Header-Informationen und springt automatisch zur URL-Adresse, auf die xxxx verweist. Dies ähnelt in gewisser Weise dem Schreiben eines Sprungs in js. Dieser Sprung ist jedoch nur dem Browser bekannt und Benutzer können ihn nicht sehen, unabhängig davon, ob etwas im Inhalt enthalten ist.
Beispiel: header("Location: http://www.example.com/");

2. Geben Sie den Inhalt der Webseite an
Dieselbe XML-Datei, wenn die Header-Informationen Gibt an: Content -type: application/xml, der Browser analysiert ihn entsprechend dem XML-Dateiformat. Wenn die Header-Informationen jedoch wie folgt lauten: Content-type: text/xml, analysiert der Browser sie als gespeicherten Text. (Browser analysieren Dateien nicht nach Erweiterungen)
Beispiel: header('Content-type: application/pdf');

3. Ich weiß nicht, ob Sie es bemerkt haben, Manchmal öffnete der Browser den Anhang als Webseite, nachdem er etwas von einigen Websites heruntergeladen und auf den Download-Link geklickt hatte, und alle angezeigten Inhalte waren verstümmelte Zeichen. Dieses Problem hängt auch mit den Header-Informationen zusammen. Manchmal entscheidet der Browser anhand des Inhaltstyps, ob er geöffnet oder gespeichert werden soll, und trifft daher manchmal ein falsches Urteil (hauptsächlich, weil der Website-Designer vergisst, den Inhaltstyp zu schreiben). Tatsächlich gibt es eine andere Möglichkeit, anzugeben, dass der Inhalt ein Anhang ist und gespeichert werden muss: Content-Disposition: attachment="xxxxx"
Beispiel: header('Content-Disposition: attachment; filename ="downloaded.pdf "');
//Datei öffnen und ausgeben
readfile('original.pdf');

HTTP-Protokollstatuscode
1×× Reserviert
2×× Darstellung Die Anfrage wurde erfolgreich empfangen
3×× Der Client muss die Anfrage weiter verfeinern, um die Anfrage abzuschließen
4×× Clientfehler
5×× Serverfehler

Syntax:
header(string, replacement,http_response_code)
Parameter
string: erforderlich. Gibt die zu sendende Header-Zeichenfolge an.
ersetzen: optional. Gibt an, ob dieser Header den vorherigen Header ersetzt oder einen zweiten Header hinzufügt. Der Standardwert ist wahr (Ersetzung). false (mehrere Header desselben Typs zulassen).
http_response_code: Optional. Erzwingt den HTTP-Antwortcode auf den angegebenen Wert. (Verfügbar in PHP 4 und höher)

Beispiel 1:
Webseite umleiten
header("Location: http://www.example.com/");
exit; 🎜> ?>

Beispiel 2:
Erzwingen Sie, dass Benutzer bei jedem Besuch dieser Seite die neuesten Informationen erhalten, anstatt den auf dem Client gespeicherten Cache zu verwenden.
//Teilen Sie dem Browser die Ablaufzeit dieser Seite mit (ausgedrückt in Greenwich Mean Time), sofern es sich um ein Datum handelt, das bereits verstrichen ist.
header("Expires:Mo,26 Jul 1970 05:00:00 GMT");

//Teilen Sie dem Browser das letzte Aktualisierungsdatum dieser Seite mit (ausgedrückt in Greenwich Mean Time). Der Zweck des aktuellen Tages besteht darin, den Browser zu zwingen, die neuesten Informationen abzurufen
header("Last-Modified:".gmdate("D,d M Y H:i:s")."

//Dem Kunden mitteilen, dass der Endbrowser kein Caching verwendet
header("Cache-Control: no-cache, Must-revalidate");

//Parameter (kompatibel mit früheren Servern) , also kompatibel mit dem HTTP1.0-Protokoll
header("Pragma: no-cache");
?>

Beispiel 3:
Hauptsächlich Statuswert an den Browser ausgeben wird für die Zugriffskontrolle verwendet
header(' HTTP/1.1 401 Unauthorized');
?> Um einem Benutzer den Zugriff auf diese Seite zu verweigern, können Sie den Status auf 404 setzen, wie unten gezeigt, sodass der Browser anzeigt, dass die Seite nicht existiert
header('HTTP/1.1 404 Not Found'); header("status: 404 Not Found"); / /Diese Schreibweise ist falsch
?>

Beispiel 5:
Speicherort versteckter Dateien
Der HTML-Tag kann zum Herunterladen gewöhnlicher Dateien verwendet werden. Wenn Sie die Datei vertraulich behandeln möchten und anderen den Dateilink nicht mitteilen können, können Sie die Header-Funktion zum Herunterladen der Datei verwenden.

header("Content-type: audio/mpeg");
header("Content-Disposition: attachment; filename=filenale");
header("Content-Description: PHP3 Generated Data ");

Beispiel 6:
Inhalt vor der Header-Funktion eingeben

Im Allgemeinen können HTML-Inhalte nicht vor der Header-Funktion ausgegeben werden. Ähnliche umfassen setcookie() und Session-Funktionen. Die Funktion muss Nachrichtenkopfinformationen zum Ausgabestream hinzufügen. Wenn es Anweisungen wie echo gibt, bevor header() ausgeführt wird, wird beim späteren Auftreten von header() der Fehler „Warnung: Header-Informationen können nicht geändert werden – Header wurden bereits gesendet von …“ gemeldet. Das heißt, dass vor diesen Funktionen kein Text, keine Leerzeilen, kein Wagenrücklauf usw. stehen darf und es am besten ist, die Funktion „exit()“ nach der Funktion „header()“ hinzuzufügen. In der folgenden falschen Schreibweise befindet sich beispielsweise eine Leerzeile zwischen den beiden PHP-Codeschnipseln:

//some code here
?>
//Hier sollte eine Leerzeile stehen
header("http/1.1 403 Forbidden");
exit();
?>
Ursache:
Wenn das PHP-Skript mit der Ausführung beginnt, kann es den HTTP-Nachrichtenheader (Titel) senden )-Informationen gleichzeitig und Textinformationen. Der HTTP-Nachrichtenheader (von der Funktion header() oder SetCookie()) wird nicht sofort gesendet, sondern in einer Liste gespeichert der Standard-Header (z. B. Content-Type-Header). Sobald das Skript jedoch eine Nicht-Header-Ausgabe sendet (z. B. unter Verwendung von HTML oder einem print()-Aufruf), muss PHP zuerst alle Header senden und diese dann beenden HTTP-Header und senden Sie dann die Textkörperdaten weiter. Ab diesem Zeitpunkt ist jeder Versuch, Header-Informationen hinzuzufügen oder zu ändern, nicht mehr zulässig und es wird eine der oben genannten Fehlermeldungen gesendet.

Lösung:
Ändern Sie php.ini, um Caching (output_buffering) zu aktivieren, oder verwenden Sie die Caching-Funktionen ob_start(), ob_end_flush() usw. im Programm. Das Prinzip ist: Wenn „output_buffering“ aktiviert ist, sendet PHP den HTTP-Header nicht, wenn das Skript eine Ausgabe sendet. Stattdessen leitet es diese Ausgabe an einen dynamisch wachsenden Cache weiter (nur verfügbar in PHP 4.0, das über einen zentralisierten Ausgabemechanismus verfügt). Sie können weiterhin Header ändern/hinzufügen oder Cookies setzen, da Header nicht tatsächlich gesendet werden. Wenn alle Skripte beendet sind, sendet PHP automatisch HTTP-Header an den Browser und sendet dann den Inhalt des Ausgabepuffers.



Für weitere Funktionen im Header-Seitensprung achten Sie bitte auf die chinesische PHP-Website für verwandte Artikel!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn