Lösung für das Problem, dass PHP Header-Informationen nicht ändern kann

不言
Freigeben: 2023-04-03 10:58:01
Original
2401 Leute haben es durchsucht

Bei der Verwendung von PHP können manchmal Fehler auftreten. Wie können diese Fehler auftreten? Und wie lösen wir diese Probleme? Dies setzt voraus, dass wir über gewisse Kenntnisse der Sprache PHP verfügen. Lassen Sie mich nun darüber sprechen, wie das Problem gelöst werden kann, dass PHP die Header-Informationen nicht ändern kann.

Zum Beispiel die folgende Fehlermeldung, dass PHP die Header-Informationen nicht ändern kann:

Warnung: Header-Informationen können nicht geändert werden – Header bereits gesendet von

Wir haben gerade erst angefangen, PHP-Programme zu schreiben. Manchmal , möglicherweise ist dieses Problem bei Ihnen aufgetreten. Wörtlich bedeutet es:

Warnung: Header-Informationen können nicht geändert werden – Header wurden bereits gesendet. . .

Was ist also der Grund für diese Warnung, dass PHP die Header-Informationen nicht ändern kann?

Das heißt, wenn wir Inhalte vor der Funktion header() oder setcookie() ausgegeben haben, wie zum Beispiel:

< ?PHP  
echo "hello";  
header("content-type:
    text/html;charset:utf-8");  
?>
Nach dem Login kopieren

Im obigen Code wird eine Warnung angezeigt!

Warum gibt es einen Warnfehler, wenn vor Header und Setcookie eine Ausgabe erfolgt? Es ist leicht zu verstehen, wenn Sie den Verarbeitungsprozess von PHP verstehen!

Wie geht PHP dann mit der Tatsache um, dass PHP die Header-Informationen nicht ändern kann?

Wenn das Skript eine Ausgabe hat (erste Ausgabe), sendet PHP zunächst Header-Informationen an den Kundendienst Senden Sie dann den Ausgabeinhalt (d. h. den Hauptinhalt im http-Protokoll). Wenn Sie keine Änderungen an den gesendeten Header-Informationen vornehmen, ist es für uns nicht möglich, den Header zu verwenden. Und setcookie und andere Funktionen, die den Header ändern, können alles!

Dann lösen wir das Problem, dass PHP die Header-Informationen nicht ändern kann!

Die erste Methode ist sehr einfach! Versuchen Sie einfach, Ausgabeinhalte vor Header und Setcookie zu vermeiden. Versuchen Sie, sie zuerst zu schreiben.

Die zweite Lösung besteht darin, den Ausgabepuffer von PHP zu verwenden. Fügen Sie den gesamten Ausgabeinhalt des aktuellen Skripts in den Ausgabepuffer ein. und an den Kunden gesendet.

Es gibt zwei Methoden, um outbuffer in PHP.ini zu aktivieren. Der Standardwert von „output_buffering“ ist „Off“ oder „On“, wenn Sie den maximalen Wert des Ausgabepuffers begrenzen möchten können Sie diese Option auf den angegebenen Wert festlegen (z. B. „output_buffering=4096“).

Eine weitere Methode, bei der PHP Header-Informationen nicht ändern kann, besteht darin, sie in einem PHP-Skript zu aktivieren:

Rufen Sie die Funktion ob_start() am Anfang des Programms oder am Anfang der öffentlichen Datei auf ;

Auf diese Weise haben wir die Ausgabepufferung von PHP aktiviert und können jede Operation ausführen

< ?PHP   
ob_start();  
echo "dfdfd";  
//注意不能卸载ob_start() 前面  
header("content-type:text/html;charset=utf-8");  
setcookie();  
?>
Nach dem Login kopieren

Wenn Sie gzip starten möchten, können Sie die Rückruffunktion ob_gzhandler hinzufügen ob_start("ob_gzhandler") ;

Über Outbuffer gibt es auch einige Funktionen:

ob_flush()
Ausgabepuffer senden (Ausgabepufferung)

ob_end_flush()
Ausgabepuffer senden (Ausgabe Pufferung) und deaktivieren Sie den Ausgabepufferungsmechanismus.

ob_end_clean()
Löschen Sie den Ausgabepuffer, ohne ihn zu senden, und deaktivieren Sie die Ausgabepufferung.

ob_get_contents()
Gibt den aktuellen Ausgabepuffer in einen String zurück. Ermöglicht Ihnen, alle vom Skript ausgegebenen Ausgaben zu verarbeiten.

ob_get_clean()
Gibt den aktuellen Ausgabepuffer in einen String zurück. Ermöglicht Ihnen, alle vom Skript ausgegebenen Ausgaben zu verarbeiten und den Ausgabepuffermechanismus zu deaktivieren.

Es gibt auch einige Funktionen, die Sie dem PHP-Handbuch entnehmen können.

< ?PHP  
ob_start();  
print "Here&#39;s a pretty dumb way to calculate the length of a string.";  
$length = strlen(ob_get_content());  
ob_end_clean();  
?>
Nach dem Login kopieren

Dieses Beispiel, bei dem PHP nicht in der Lage ist, Header-Informationen zu ändern, zeigt eine sehr ineffiziente Methode zur Bestimmung der Länge von a Zeichenfolge. Es wird nicht einfach mit der Funktion strlen() verarbeitet, sondern zunächst aktiviert Der Ausgabepuffermechanismus druckt die Zeichenfolge und bestimmt dann die Länge des Ausgabepuffers. Löschen Sie abschließend die Ausgabe Puffer (nicht gesendet) und deaktivieren Sie dann den Ausgabepuffermechanismus.

Verwandte Empfehlungen:

Beim Ändern von Informationen in PHP ist eine Ausnahme aufgetreten und die Informationen können nicht geändert werden

Das obige ist der detaillierte Inhalt vonLösung für das Problem, dass PHP Header-Informationen nicht ändern kann. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!