Necro_nomicon
Erfahrenes Mitglied
Hallo!
Ich weiss, die Fehlermeldung steht auch unter haeufige Frage, leider kann ich damit mein Problem nicht umgehen, weil ich nicht genau weiss, wie ich es umgehen kann.
deswegen bitte nicht boese sein, dass ich hier trotzdem deswegen nachfrage.
Ich habe heute mein erstes komplett selbstgeschriebenes Formular geschrieben,
mit Hilfe angelesenem php-Wissen aus einem Buch.
Nun ist es so, dass bei allen Tests immer alles gut geklappt hat.
Nur in dem moment, wo man den code mit "location: form_confirm.php"
einfuegt kommt die Fehlermeldung: "Headers already sent"
Ich schlauen Buch ist nun beschrieben, dass man dieses "location" nicht vor
der Ausgabe eines HTML-Codes stellen darf, also hab ich es ganz oben in der
Datei reingegeben (siehe die ersten Zeilen von kontakt.php)
Das hat auch gefunkt.
Bis ich zu dem Punkt gekommen bin, dass ich mehrere Zeichen fuer die
Eingabefelder ueberpruefen lasse und diese Angaben in einer eigenen Datei
auslagere (form_validation.php) und diese dann mit der Zeile:
include ("form_validation.php");
direkt am Anfang des Php-Codes bei "if ($_POST['gesendet'] {...."
reingebe.
Nun passiert folgendes:
Wenn ich auf die kontakt.php gehe, dann werd ich automatisch
weitergeleitet auf die Datei form_confirm.php und kann also keine Nachricht hinterlassen.
Ich habe nun diverse Sachen bereits ausgeblendet, weil ich dachte, dass dort
vielleicht der Fehler liegt. Anscheinend liegt der Fehler aber darin, dass
ich nun seit dem include und dem geaenderten Code, die 3 Codezeilen mit
dem "location" nicht mehr oben einbinden darf.
Wenn ich diese naemlich rausgebe, dann hab ich ganz normal wieder die Seite
mit kontakt.php und dem Formular.
Die Frage ist nun wohl, wo ich den Teil mit "location: form_confirm.php"
einbinde im Code?
(Im Buch steht nur die hilfreiche Bemerkung: ...moment, ich zitiere:
Der "Headers already sent" ist ein sehr haeufiger und fuer Anfaenger sehr
frustrierender Fehler....
weiters steht: Dass man die include-Funktion des oberen Seitenbereichs bloss
in eine Zeile nach dem PHP, das die Seite umleitet, verschieben muss und dann
sei alles OK.
(ich habe einige Stellen probiert, bei mir war nichts OK)
Es soll ja erst das Kontaktformular dastehen, das man ausfuellen kann. Dann wird ueberprueft, ob eh kein Feld leer ist und ob die Felder bestimmte Zeichen beinhalten oder nicht beinhalten, danach soll dann das mail/die Nachricht abgeschickt werden und man wird weitergeleitet auf die Seite auf der steht: "Die Nachricht wurde erfolgreich verschickt".
An welcher Stelle muss ich den unten stehenden Code nun einfuegen? gebe ich ihn da rein, wo das Formular ist, dann kommt die Fehlermeldung mit dem header, geb ich es zu Seitenanfang, dann werde ich automatisch weitergeleitet.
Ich weiss, die Fehlermeldung steht auch unter haeufige Frage, leider kann ich damit mein Problem nicht umgehen, weil ich nicht genau weiss, wie ich es umgehen kann.
deswegen bitte nicht boese sein, dass ich hier trotzdem deswegen nachfrage.
Ich habe heute mein erstes komplett selbstgeschriebenes Formular geschrieben,
mit Hilfe angelesenem php-Wissen aus einem Buch.
Nun ist es so, dass bei allen Tests immer alles gut geklappt hat.
Nur in dem moment, wo man den code mit "location: form_confirm.php"
einfuegt kommt die Fehlermeldung: "Headers already sent"
Ich schlauen Buch ist nun beschrieben, dass man dieses "location" nicht vor
der Ausgabe eines HTML-Codes stellen darf, also hab ich es ganz oben in der
Datei reingegeben (siehe die ersten Zeilen von kontakt.php)
Das hat auch gefunkt.
Bis ich zu dem Punkt gekommen bin, dass ich mehrere Zeichen fuer die
Eingabefelder ueberpruefen lasse und diese Angaben in einer eigenen Datei
auslagere (form_validation.php) und diese dann mit der Zeile:
include ("form_validation.php");
direkt am Anfang des Php-Codes bei "if ($_POST['gesendet'] {...."
reingebe.
Nun passiert folgendes:
Wenn ich auf die kontakt.php gehe, dann werd ich automatisch
weitergeleitet auf die Datei form_confirm.php und kann also keine Nachricht hinterlassen.
Ich habe nun diverse Sachen bereits ausgeblendet, weil ich dachte, dass dort
vielleicht der Fehler liegt. Anscheinend liegt der Fehler aber darin, dass
ich nun seit dem include und dem geaenderten Code, die 3 Codezeilen mit
dem "location" nicht mehr oben einbinden darf.
Wenn ich diese naemlich rausgebe, dann hab ich ganz normal wieder die Seite
mit kontakt.php und dem Formular.
Die Frage ist nun wohl, wo ich den Teil mit "location: form_confirm.php"
einbinde im Code?
(Im Buch steht nur die hilfreiche Bemerkung: ...moment, ich zitiere:
Der "Headers already sent" ist ein sehr haeufiger und fuer Anfaenger sehr
frustrierender Fehler....
weiters steht: Dass man die include-Funktion des oberen Seitenbereichs bloss
in eine Zeile nach dem PHP, das die Seite umleitet, verschieben muss und dann
sei alles OK.
(ich habe einige Stellen probiert, bei mir war nichts OK)
Es soll ja erst das Kontaktformular dastehen, das man ausfuellen kann. Dann wird ueberprueft, ob eh kein Feld leer ist und ob die Felder bestimmte Zeichen beinhalten oder nicht beinhalten, danach soll dann das mail/die Nachricht abgeschickt werden und man wird weitergeleitet auf die Seite auf der steht: "Die Nachricht wurde erfolgreich verschickt".
An welcher Stelle muss ich den unten stehenden Code nun einfuegen? gebe ich ihn da rein, wo das Formular ist, dann kommt die Fehlermeldung mit dem header, geb ich es zu Seitenanfang, dann werde ich automatisch weitergeleitet.
PHP:
<?php
if (!$fehler_nachricht) { // wenn keine Fehler
mail ($ziel_email, $email_betreff, $email_hauptteil); // Email verschicken
header ('Location: form_confirm.php'); // auf neue Seite weiterleiten
exit(); // Skript hier anhalten,
}
?>