Aloha!
Meldung:
Warning: Cannot add header information - headers already sent by (output started at /home/dancepro/public_html/anmeldeformulare/tk030902/m_formchecker030902.php:8) in /home/dancepro/public_html/anmeldeformulare/tk030902/formchecker030902.php on line 235
Wie kann ich das problem beheben? Kann man headers löschen oder überschreiben? gem. php doku gibt es so was nicht, oder habe ich das falsch verstanden?
Vermutlich nicht, ohne deine Templates nochmal komplett umzustricken.
Dein Fehler: Du gibst im M_formchecker* HTML-Text aus, willst dann aber innerhalb des includes() von formchecker* mit header() arbeiten.
Das klappt nicht. Entweder packst du das include() direkt an den Anfang (erste Zeile) von M_formchecker*, damit du noch keinen HTML-Output generierst, oder du vergißt es.
Die dritte Variante ist, die Ausgabe erst einmal zu puffern, so dass hinterher noch header zugefügt werden können. Wie das geht, und warum das möglicherweise keine besonders gute Idee ist, steht auf
www.php.net in der Erklärung zum Befehl header().
Die vierte Variante: Drehe deine Programmierung um. Normalerweise ist es doch so, dass Templates an einer ganz bestimmten Programmstelle fürs Aussehen sorgen sollen. Du solltest also den aktiven Teil des Formcheckers ansprechen, welcher je nach Datenlage möglicherweise mit dem Template was macht - nicht umgekehrt durch das Template den aktiven Teil aufrufen.
Fünfte Variante: Ändere deine Programmiertaktik. Auch der Formchecker kann die Fehlerseite ausgeben. Das kann er sogar noch viel besser, als eine externe Seite, denn du könntest das Formular erneut ausgeben, alle Eingaben sind als Value vorbelegt, und die fehlerhaften Felder sind irgendwie besonders gekennzeichnet (und kriegen per Javascript onload den focus()), um die Korrektur zu erleichtern. Dann benötigst du keine header()-Funktion mehr.
- Sven Rautenberg