Aktueller Standort: Startseite> Neueste Artikel> Detaillierte Erläuterung der Reihenfolge von Header () und HTML -Ausgabe

Detaillierte Erläuterung der Reihenfolge von Header () und HTML -Ausgabe

M66 2025-05-18

Wenn ein Browser auf eine Webseite zugreift, legt der Server zunächst die Kommunikation mit dem Browser über das HTTP -Protokoll fest. Dieser Vorgang umfasst das Senden von HTTP -Headerinformationen und den nachfolgenden HTML -Inhalt. Die HTTP -Header -Informationen enthält nicht nur grundlegende Informationen zur Webseite (z. B. Inhaltstyp, Zeichensatz usw.), sondern auch festgelegt, wie der Browser die Seitenanzeige, Cache, Sprung und andere Verhaltensweisen umgeht.

In PHP verwenden wir die Header () -Funktion, um HTTP -Header zu senden. Beispielsweise wird der folgende Code den Browser zu einer neuen Seite umleiten:

 <?php
header("Location: http://m66.net/newpage.php");
exit;
?>

Wenn dieser Code ausgeführt wird, sendet der Server einen Umleitungsheader ( Speicherort ) und der Browser springt basierend auf diesen Header -Informationen. Zu diesem Zeitpunkt wird das PHP -Skript nicht mehr ausgeführt (aufgrund von exit () ), sodass der nachfolgende HTML -Inhalt nicht ausgegeben wird.

2. Die Beziehung zwischen Header () und HTML -Ausgang

In PHP muss der HTTP -Header vor einer HTML -Ausgabe gesendet werden. Dies liegt daran, dass die HTTP -Header -Informationen zuerst vom Server gesendet werden und der HTML -Inhalt nachfolgende Daten sind. Wenn Sie zum ersten Mal den HTML -Inhalt oder andere Zeichen in PHP ausgeben und dann die Funktion Header () aufrufen, meldet PHP einen Fehler und fordert die "bereits gesendeten Headers" auf.

Beispielsweise wird der folgende Code fehlerhaft:

 <?php
echo "Hello World!";  // Ausgabe HTML Inhalt
header("Location: http://m66.net/newpage.php");  // Versuchen Sie, einen Umleitungsheader zu senden
exit;
?>

Wenn dieser Code ausgeführt wird, wird eine Warnung geworfen, was dazu veranlasst, dass der Header gesendet wurde. Der Grund dafür ist, dass die Echo -Anweisung den HTML -Inhalt ausgegeben hat, wodurch der HTTP -Header nicht mehr gesendet wird.

3. Warum muss Header () vor der Ausgabe gerufen werden?

Im HTTP -Protokoll müssen Header -Informationen vor dem tatsächlichen Seiteninhalt (HTML, Bilder, CSS usw.) gesendet werden. Der Browser entscheidet, wie die empfangene Seite basierend auf den empfangenen Header -Informationen behandelt wird. Der Standortheader zeigt beispielsweise an, dass der Browser umleiten sollte, während der Inhaltstyp dem Browser den Inhaltstyp der aktuellen Seite mitteilt.

PHP muss diese Header über die Header () -Funktion senden, bevor er den HTML -Inhalt ausgibt. Sobald HTML an den Browser gesendet wird, kann der Server den HTTP -Header nicht mehr ändern. Um sicherzustellen, dass der HTTP -Header erfolgreich geändert werden kann (z. B. Umleitung), müssen Sie sicherstellen , dass der Header () vor einer Ausgabe aufgerufen wird.

4. Ausgangspufferungslösung

Obwohl PHP erforderlich ist, dass Header () vor dem Ausgabe eines HTML -Inhalts aufgerufen wird, kann in einigen Fällen die Ausgabepufferung dazu beitragen, dieses Problem zu lösen. Durch die Ausgabebufferung kann PHP den HTML -Inhalt im Speicher speichern, bevor er tatsächlich gesendet wird, damit er bei nachfolgenden Aufrufen an Header () vom Ausgabeinhalt nicht beeinflusst werden kann.

Beispiele für Code mit Ausgabepufferung sind wie folgt:

 <?php
ob_start();  // Ausgangspufferung einschalten
echo "Hello World!";  // 仍然可以输出Inhalt
header("Location: http://m66.net/newpage.php");  // Header senden
exit;
?>

Im obigen Code ermöglicht die Funktion obs_start () die Ausgabepufferung, sodass PHP den Inhalt nicht sofort an den Browser sendet, sondern im Puffer nicht an den Browser ausgeht. Auf diese Weise können Sie anschließend die Funktion Header () aufrufen, um den HTTP -Header zu ändern, ohne auf den Fehler "bereits gesendete" Headers gesendet zu werden.

5. Common Header () Verwendungsszenarien

  1. Seitenumleitung: Verwenden Sie Header ("Ort: URL"), um den Benutzer auf eine andere Seite umzuleiten.

     header("Location: http://m66.net/anotherpage.php");
    exit;
    
  2. Setzen Sie den Inhaltstyp: Verwenden Sie Header ("Inhaltstyp: Typ"), um den Inhaltstyp der Seite festzulegen, zum Beispiel:

     header("Content-Type: application/json");
    echo json_encode($data);
    
  3. Steuercache: Verwenden Sie Header (), um die Cache -Steuerung einzustellen, um anzugeben, ob der Browser eine bestimmte Seite zwischenspeichern sollte.

     header("Cache-Control: no-cache, no-store, must-revalidate");
    header("Pragma: no-cache");
    header("Expires: 0");
    

6. Zusammenfassung

Die Funktion Header () von PHP () wird zum Senden von HTTP -Header -Informationen verwendet, und seine Anrufreihenfolge ist für die Ausgabereihenfolge der Seite von entscheidender Bedeutung. Da der HTTP -Header vor dem HTML -Inhalt gesendet werden muss, müssen Sie sicherstellen, dass beim Aufrufen von Header () nichts ausgegeben wird. Um dieses Problem zu lösen, kann die Ausgangspufferung als effektive Lösung verwendet werden. Das Verständnis der Beziehung zwischen der Funktion Header () und der Seitungsausgangsreihenfolge wird dazu beitragen, Fehler und unerwartete Verhaltensweisen zu vermeiden, die durch falsche Anrufreihenfolge verursacht werden.

Durch die Verwendung der Funktion und der rationalen Ausgabepufferung können Sie sicherstellen, dass die PHP -Skripte wie erwartet funktionieren und unnötige Fehler vermeiden.