Rolf B: header location will nicht, wie ich will

Beitrag lesen

Hallo Pit,

PHP versteckt das Thema "HTTP-Protokoll" relativ erfolgreich vor dem eigentlichen Script, aber an dieser Stelle ist es dann vorbei.

Eine HTTP Antwort besteht aus einem Header-Teil und den Nutzdaten. Um sie zum Browser zu bringen, warten mehrere Busse an der Serverhaltestelle. Der erste Bus ist schön ordentlich und sauber, und der Fahrer achtet streng darauf, dass keine dreckigen Nutzdatenbytes einsteigen. Sobald sich der erste fiese Nutzerich an der Haltestelle sehen lässt, macht der Fahrer die Tür zu und gibt Vollgas. Die Nutzeriche müssen dann mit dem nächsten Bus fahren.

Wenn nun aber noch eine vornehme Headerdame ankommt, z.B. Lady Location, dann wendet sie sich natürlich angewidert ab. "Also nei-en, diese stinkenden Nuutzdaten, wie könnte ich mir da den Rocksaum beflecken!". Und sie kehrt heim und heult sind bei Papa Hugo-Paul (PHP) aus. „*Der bööse Headerbuhuhus - einfach abgefahren, ohne mihihich schnief“.

Und die Moral von der Geschicht: Sende keine Nutzdaten nicht, wenn Lady Location noch im Headerbus mitfahren soll.

Nutzdaten stecken im ECHO, und außerhalb der <?php ?> Schutzgatter. Manchmal auch in Form einer Leerstelle oder eines Zeilenumbruchs vor dem ersten <?php Tag.

Ein PHP Fehler, der eine Fehlermeldung ausgibt, hat den gleichen Effekt. Fehlermeldungen sind zwar nicht wirklich Nutzdaten, aber manchmal immerhin nützlich…

Die Stelle zu finden, die das erste Nutzdatenbyte erzeugt, mag knifflig sein, das ist aber von ferne kaum möglich.

Deswegen ist es in aufwändigeren Scripten auch eigentlich so, dass man zunächst alle Daten für die Antwort aufbereitet und zwischenspeichert. Erst wenn alle Daten bereit sind, sendet man die nötigen Header, und dann en bloc die Antwort.

Rolf

--
sumpsi - posui - clusi