EisFuX: Ausgabesteuerung mit PHP

Beitrag lesen

Hallo Jan!

Diese Fehlermeldung tritt im Allgemeinen dann auf, wenn das PHP-Script, nachdem es schon "Nutzdaten" zum Browser gesendet hat, plötzlich einen Befehl vorfindet, der den HTTP-Header ändern oder ergänzen soll. Der übliche Verdächtige ist in solchen Fällen die Funktion header(). Es können aber auch die Cookie- und Session-Befehle dafür in Frage kommen.

Das Problem löst du am einfachsten, indem du die gesamte Textausgabe pufferst. Dafür hat PHP ein ganzes Arsenal an Funktionen. Sie  beginnen meist mit den Zeichen "ob_".

Üblicherweise macht man das so:

  
<?php  
ob_start();  
  
// ab hier steht dein alter Quellcode  
  
ob_end_flush();  
exit();  
// hier ist dein Script offiziell zu Ende  
  
// Funktionsdefinitionen kannst du aber noch hinschreiben  
  
?>  

ob_start() sorgt dafür, dass alles, was jetzt mit den PHP-Textausgabebefehlen "geschrieben" wird, nicht direkt zum Browser geschickt, sondern in einen speziellen Bereich, den Ausgabepuffer, geschrieben wird.

ob_end_flush() schickt den Inhalt des Ausgabepuffers auf die Reise zum Browser und leert in gleichzeitig.

Da dieses Problem so gut wie jedem PHP-Bastler früher oder später über den Weg läuft, bin ich mir aber sicher, dass
im Forumsarchiv schon Threads dazu zu finden sind. Man muss halt nur die richtigen Suchbegriffe dazu eingeben. Ich weiß, das ist nicht immer so einfach.

Du solltest dir aber die Kritiken der anderen hier sehr wohl zu Herzen nehmen. Wenn dich hier jemand auf Sicherheitslücken hinweist, ist das besser, als wenn du die Gefahr von Sicherheitslücken im laufenden Betrieb deines Scriptes erfahren musst. Die Devise lautet: Vor dem Schaden klug sein.

MffG
EisFuX

--
Erinnert mich ein Bisschen an die if-then-Schleifen von Java.
(Alexandra Freund, IT-Compactkurs)