Sven Rautenberg: Affenformular fertig - aber

Beitrag lesen

Moin!

Auf meiner reellen Seite allerdings erhalte ich folgende Fehlermeldung:
"Warning: Cannot modify header information - headers already sent by (output started at /home/dunzinger/www/united-web/faq/index.php:3) in /home/dunzinger/www/united-web/faq/guestbook/gaestebuch.php on line 100"
Mir ist schon klar, woher diese Fehlermeldung stammt, nämlich daher, daß die Seite dynamisch zusammengebaut wird und deshalb schon vor dem Script Daten an den Browser gesendet wurden.

Dann beseitige dies. Es gibt keine andere Möglichkeit. Tausende gleichlautende Hinweise findest du in unserem Archiv.

Nur, wie kann ich diese Situation umgehen?

Verbessere deine Seitenskripte enorm.

Das Problem deiner jetzigen Herangehensweise ist, dass du das Prinzip EVA nicht einhälst auf deiner Index-Seite: Eingabe - Verarbeitung - Ausgabe.

Sondern du fängst gleich mit der Ausgabe des DOCTYPE an, und dann erst kommt ein wenig PHP zum Zuge, verteilt auf die ganze Seite. Sowas ist schlecht.

Gut hingegen wäre, wenn du dir eine beliebige Template-Engine zulegen würdest (die hat den Vorteil, dass man sich seine Seiten designmäßig einheitlich zusammensetzen kann), und dich dann streng an das EVA-Prinzip hälst:

1. Entgegennahme, Vollständigkeits- und Plausibilitätsprüfung der vom User eingegebenen Daten. Dieser Punkt entfällt bei dem ersten Aufruf der Startseite beispielsweise vollkommen, weil der Benutzer da noch nichts sendet. Aber er könnte ja. Genauso beim Gästebuch.

2. Verarbeitung und Aufbereitung der Daten. Dazu zählt auch, die Template-Engine mit den notwendigen Informationen zu füttern, also Inhalte und Templates von Platte lesen, ggf. Benutzerinformationen einfügen etc. Vielleicht muß an dieser Stelle auch entschieden werden, welches von mehreren Templates gewählt wird, oder welche Informationen ausgegeben werden müssen.

3. Ausgabe der fertigen Seite. Das kann entweder (wenn man auf Template-Engines verzichten möchte) als lange, untem am PHP-Skript dranhängende Seite geschehen, in der an den verschiedenen Stellen Variablen ausgegeben oder HTML-Fragmente eingebunden werden, oder eben durch Aufruf der Parse-Methode der Template-Engine. Je nach Anwendungsfall könnten hier zu Beginn auch zwischen den verschiedenen möglichen Seitenversionen unterschieden werden, so dass mehrere komplette HTML-Seiten mit IF/ELSE oder SWITCH am Skript dranhängen.

- Sven Rautenberg