Analyse und Lösungen für die Ursachen von PHP-Header-Fehlern

黄舟
Freigeben: 2023-03-06 08:02:02
Original
1769 Leute haben es durchsucht

Wenn Sie den Header („location:test.php“) zum Springen in PHP verwenden, beachten Sie bitte die folgenden Punkte:

1 Zwischen Standort und darf kein Leerzeichen stehen ":" , sonst kommt es zu einem Fehler.

2. Es darf keine Ausgabe vor der Verwendung des Headers erfolgen, auch keine Leerzeichen nach dem Tag „?>“! !

3. Der PHP-Code nach dem Header wird ebenfalls ausgeführt.

Fortsetzung:

Problem: Inhalt vor der Header-Funktion eingeben

Im Allgemeinen können HTML-Inhalte nicht vor dem ausgegeben werden Header-Funktion Ähnlich wie setcookie() und Sitzungsfunktionen müssen diese Funktionen dem Ausgabestream Nachrichten-Header-Informationen 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:

//Hier sollte eine Leerzeile stehen

Grund:

Wenn das PHP-Skript mit der Ausführung beginnt, kann es gleichzeitig die Header-Informationen (Titel) der HTTP-Nachricht und die Informationen zum Textkörper senden. Der HTTP-Nachrichtenheader (aus der Funktion header() oder SetCookie()) ist Es wird nicht sofort gesendet, sondern in einer Liste gespeichert. Dadurch können Sie die Header-Informationen ändern, einschließlich des Standard-Headers (z. B. Content-Type-Header). Sobald das Skript jedoch eine Nicht-Header-Ausgabe sendet (z. B. mithilfe von HTML oder ein print()-Aufruf, dann muss PHP zuerst alle Header senden und dann den HTTP-Header beenden. Anschließend ist der Versuch, Header-Informationen hinzuzufügen oder zu ändern, nicht zulässig Es werden die oben genannten Fehlermeldungen gesendet.

Lösung:

Ändern Sie php.ini, um den Cache (output_buffering) zu öffnen, ändern Sie „output_buffering=0“ in „output_buffering=4096“

oder im Programm Verwenden Sie die Cache-Funktionen ob_start(), ob_end_flush() usw. 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.

Das Obige ist die Analyse und Lösung der Ursachen für PHP-Header-Fehler. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage