In der PHP -Programmierung wird die Funktion Header () verwendet, um RAW -HTTP -Header -Informationen zu senden. Zu den allgemeinen Anwendungsszenarien gehören das Umleiten von Benutzern, das Einstellen von Cache -Steuerelementen oder das Ändern von Inhaltstypen. Es gibt jedoch eine wichtige Einschränkung für die Verwendung der Header () -Funktion - es kann keine Ausgabe geben, bevor der Header () aufgerufen wird. Andernfalls sendet PHP keine Headerinformationen korrekt und kann zu einem Fehler führen.
Anforderungen für das HTTP -Protokoll
Das HTTP -Protokoll sieht vor, dass Header -Informationen vor der Reaktionsbehörde gesendet werden müssen. Bei Verwendung der Funktion Header () müssen Sie daher sicherstellen, dass nichts für den Browser ausgegeben wurde. Jede Ausgabe (einschließlich HTML, Leerzeichen, Zeilenumbrüche, oder Fehlermeldungen usw.) veranlasst PHP, einen Teil des Antwortkörpers zu senden, wodurch nachfolgende Headerinformationen gesendet werden. Mit anderen Worten, Header () muss vor einer Ausgabe aufgerufen werden.
"Headerinformationen können nicht ändern" Fehler <br> Wenn etwas ausgegeben wird, bevor die Funktion Header () aufgerufen wird, wird PHP einen Fehler werfen: "WARNUNG: Headerinformationen können nicht ändern - Header, die bereits von ..." gesendet werden. ". Dies bedeutet, dass PHP damit begonnen hat, Antwortinhalte zu senden und die Headerinformationen nicht mehr geändert oder gesendet werden. Dieser Fehler stört normalerweise die normale Funktion der Website, insbesondere in Szenarien wie Umleitung und Anmeldeverifizierung.
Cache -Steuerung
Wenn PHP Header -Informationen sendet, können Sie Header () verwenden, um Cache, Typ oder Umleitung zu steuern. Bei Ausgabe kann der HTTP -Header nicht wie erwartet festgelegt werden, was dazu führen kann, dass unerwünschte Caches oder die Umleitung von Seiten nicht ordnungsgemäß durchgeführt werden.
Stellen Sie sicher, dass es keine leeren Ausgänge gibt <br> Vermeiden Sie Weißespace -Zeichen oder Zeilenunterbrechungen am Anfang und am Ende einer PHP -Datei. Normalerweise tritt dieses Problem am Anfang oder am Ende einer PHP -Datei auf, insbesondere vor oder nach dem < ? PHP -Tag. Stellen Sie sicher, dass es zu Beginn und am Ende der Datei keine Leerzeichen oder Zeilenunterbrechungen gibt.
Zum Beispiel erstellt der folgende Code Probleme:
<?php
// Fehler:Es stehen leere Zeichen vor
header("Location: http://m66.net");
exit;
?>
Der richtige Weg ist:
<?php
header("Location: http://m66.net");
exit;
?>
Verwenden Sie ob_start () und ob_end_flush ()
PHP bietet einen Ausgangspufferungsmechanismus, mit dem alle Ausgangsinhalte erfasst werden können, bevor eine tatsächliche Antwort gesendet wird. Durch die Verwendung von ob_start () startet PHP die Pufferausgabe, bis OB_END_FLUSH () aufgerufen wird. Auf diese Weise können Sie die Header () -Funktion aufrufen, bevor Sie etwas ausgeben.
Beispiel:
<?php
ob_start(); // Ausgangspufferung starten
header("Location: http://m66.net"); // Jetzt sicher zu bedienen header
ob_end_flush(); // Löschen Sie den Puffer und senden Sie die Ausgabe
exit;
?>
Vermeiden Sie Ausgabe von Fehlermeldungen <br> Während der Entwicklung zeigt PHP normalerweise eine Warn- oder Fehlermeldung an, wenn ein Fehler auftritt. Wenn Fehlermeldungen ausgegeben werden, wirken sie sich auf das Senden des Headers aus. Um dies zu vermeiden, können Sie die Fehlerausgabe deaktivieren, indem Sie die Datei php.ini oder die Funktion ini_set () verwenden.
Konfigurieren Sie Php.ini :
display_errors = Off
Verwenden Sie ini_set () in Ihrem Code:
<?php
ini_set('display_errors', 0); // 禁止Fehler输出
header("Location: http://m66.net");
exit;
?>
Überprüfen Sie Bibliotheken oder Frameworks von Drittanbietern <br> Einige Bibliotheken oder Frameworks von Drittanbietern können automatisch Inhalte ausgeben oder Debugging während der Anforderungsverarbeitung ausführen. Zu diesem Zeitpunkt können Sie die Dokumentation oder den Quellcode dieser Bibliotheken überprüfen, um sicherzustellen, dass sie den Inhalt nicht ausgeben, bevor Sie Header () aufrufen. In einigen Frameworks können Sie Protokollpegel oder Ausgabestufen konfigurieren, um dieses Problem zu vermeiden.
Debugg -Ausgabe <br> Wenn Sie während der Entwicklungsphase debuggen müssen, können Sie OB_Start () für die Ausgabepufferung vorübergehend verwenden oder alle Ausgänge nach Abschluss des Debuggens ausgeben, um sicherzustellen, dass die Header -Informationen vor der Ausgabe gesendet werden.
Stellen Sie sicher, dass Sie sicherstellen, dass nichts ausgibt , bevor es aufgerufen wird. Leerzeichen, Zeilenumbrüche, HTML -Code oder Fehlermeldungen usw. können dazu führen, dass PHP keine korrekten Headerinformationen sendet. Durch rationales Verwendung von Ausgabepuffern, das Vermeidung von Ausgangsfehlerinformationen und die sorgfältige Planung der Codestruktur kann dieses Problem effektiv vermieden werden, um sicherzustellen, dass die Header () -Funktion normal funktioniert, wodurch korrekte Umleitung, Cache -Steuerung und andere Funktionen der Website erreicht werden.
Verwandte Tags:
header