Bei der PHP -Programmierung wird die Header () -Funktion normalerweise zum Senden von HTTP -Headern von RAW verwendet, insbesondere bei der Umleitung von Seiten. Zu den gemeinsamen Verwendungen gehören die Umleitung von Seiten, Einstellungen für Inhaltstypen usw. Obwohl die Header () -Funktion leistungsstark ist. In der tatsächlichen Entwicklung stoßen Entwickler häufig auf das Problem, dass der festgelegte HTTP -Header nicht wirksam ist. In diesem Artikel wird untersucht, wie die Einstellungen der Header () -Funktion in PHP überprüft und debuggen, um sicherzustellen, dass er korrekt wirksam wird.
Die Header () -Funktion muss aufgerufen werden, bevor Sie etwas ausgeben. Wenn das Skript etwas (einschließlich Leerzeichen, Zeilenumbrüche oder HTML -Tags usw.) vor dem Aufrufen von Header () ausgegeben hat, setzt PHP den HTTP -Header nicht korrekt.
Sie können prüfen, ob der Ausgangspuffer von den folgenden Methoden eingeschaltet wird, um im Voraus Ausgabeninhalte zu vermeiden:
ob_start(); // Schalten Sie den Ausgangspuffer ein
// Andere Codes
header("Location: http://m66.net"); // Umleiten
ob_end_flush(); // Pufferinhalt ausgeben und schließen
Ob_Start () aktiviert den Ausgangspuffer, sodass alle Ausgabinhalte im Puffer vorübergehend gespeichert werden und erst dann an den Browser ausgegeben werden, wenn das Skript ausgeführt wird.
Wenn Sie nicht sicher sind, ob der Inhalt ausgegeben wurde, können Sie die Funktion Header_Sent () verwenden, um zu überprüfen, ob der Inhalt ausgegeben wurde. Diese Funktion gibt einen booleschen Wert zurück, der angibt, ob die Ausgabe aufgetreten ist.
if (headers_sent($file, $line)) {
echo "Headers already sent in $file on line $line";
} else {
header("Location: http://m66.net"); // Umleiten
}
Wenn Headers_Sent () true zurückgibt, bedeutet dies, dass PHP den Inhalt vor dem Aufruf von Header () ausgegeben hat, wodurch die HTTP -Header -Einstellung fehlschlägt. Die Ausgabedateien und Zeilennummern helfen Entwicklern, die Grundursache des Problems zu finden.
Stellen Sie sicher, dass die an die Header () -Funktion übergebenen Parameter korrekt und erwartet sind. Wenn beispielsweise eine Seitenumleitung durchgeführt wird, muss die URL gültig und korrekt formatiert sein. Wenn die URL einen relativen Pfad verwendet, stellen Sie sicher, dass sie mit dem Pfad der aktuellen Seite übereinstimmt. Wenn externe Domain -Namen beteiligt sind, stellen Sie sicher, dass der Domänenname korrekt ist, wie unten gezeigt:
header("Location: http://m66.net/somepage.php");
exit(); // verwenden exit() Stoppen Sie die Skriptausführung,确保Umleiten生效
Einige PHP -Konfigurationen können das Verhalten der Header () -Funktion () beeinflussen, insbesondere in bestimmten Serverkonfigurationen. Beispielsweise kann die Einstellung output_buffer das Senden von HTTP -Headern beeinflussen. Sie können die relevanten Einstellungen in PHP.ini überprüfen, um zu bestätigen, ob Konfigurationselemente vorhanden sind, die verhindern, dass Header () ordnungsgemäß funktioniert.
output_buffering = On
Wenn output_buffering auf ein gesetzt ist, speichert PHP alle Ausgabeinhalte in den Puffer, bevor die Antwort gesendet wird, bis das Skript ausgeführt wird.
Das Aktivieren von PHP -Fehlerprotokollen kann dazu beitragen , die Funktion der Header () -Funktion korrekt zu debuggen. Durch Überprüfen des Fehlerprotokolls können Sie sehen, ob sich mit dem Kopf Warnungen oder Fehler beziehen.
Aktivieren Sie die Fehlerprotokollierung in Php.ini :
log_errors = On
error_log = /path/to/error.log
Wenn die Protokollierung aktiviert ist, protokolliert PHP Fehler in der Ausführung und hilft Entwicklern, zu verstehen, ob es beim Aufrufen von Header () ein Problem gibt.
Wenn die Header () -Funktion aufgerufen wird, kann die vom Browser empfangenen Antwort -Header -Informationen über die Entwicklerwerkzeuge des Browsers angezeigt werden. Drücken Sie im Chrome -Browser F12 , um das Entwickler -Tool zu öffnen, um auf die Registerkarte "Netzwerk" zu wechseln. Nach dem Aktualisieren der Seite können Sie die gesendete HTTP -Anforderung und den Antwortkopf sehen.
Wenn die Seite den Inhaltstyp nicht wie erwartet umleitet oder festlegt, können Sie überprüfen, ob der Antwortheader die von Ihnen festgelegten Header () -Informationen enthält. Wenn nicht, bedeutet dies, dass das PHP -Skript den Header nicht richtig sendet.
In einigen Fällen müssen Sie nach dem Aufrufen von Header () die Funktion exit () oder Die () verwenden, um die Ausführung des Skripts zu stoppen, um sicherzustellen, dass die Umleitung oder andere Headeroperationen sofort wirksam werden können.
header("Location: http://m66.net");
exit();
Wenn exit () nicht verwendet wird, kann das Skript weiter ausgeführt werden, was dazu führt, dass die nachfolgende Ausgabe den zuvor festgelegten HTTP -Header überschreibt.
Beim Überprüfen und Debuggen der Header () -Funktion in PHP können Sie bei der Überprüfung des Ausgangspuffers, der Überprüfung des Ausgabebufers, der Funktion der Headers_Sent () , der Überprüfung der Funktionsweise der Funktionsparameter, der Konfiguration der PHP -Einstellungen und der Anzeige von Browser -Antwort -Headern durch die Überprüfung der Funktion. Durch diese Methoden kann das Problem, das die Funktion "Header ()) nicht effektiv ist, effektiv gelöst werden, um sicherzustellen, dass die PHP -Skripte wie erwartet funktionieren.