Nach einer PHP Abfrage auf eine HTML Seite weiterleiten

T

taz1978

Mitglied
Thread Starter
Dabei seit
12.06.2004
Beiträge
38
Reaktionspunkte
0
Hallo zusammen,
ich hab ein kontaktformular und wenn dies ausgefüllt ist und der user es absendet hat soll die webseite danke_mail.html angzeigt werden. wie kann ich das machen?

<?php
if($abschicken) {
if(empty($name) || empty($email) || empty($text)){
echo "Bitte gehen Sie zur&uuml;ck und f&uuml;llen Sie alle Felder aus!";
}else{
while(list($feld,$wert)=each($HTTP_POST_VARS)){
if($feld!="abschicken"){
$mailnachricht.=ucfirst($feld).": $wert\n";
}
}
$mailnachricht.="\nDatum/Zeit: ";
$mailnachricht.=date("d.m.Y H:i:s");
$mailbetreff="Kontakt: ";
$mailbetreff .=$HTTP_POST_VARS[betreff];
mail("info@localhost.de", $mailbetreff, $mailnachricht, "From: $email");
Hier soll die weiterleitung zu danke_mail.html hin!


}
}else{
echo "Ein Fehler ist aufgetreten.";
}
?>


ich will statt den echo befehlen html seiten angeben. kann mir jemand helfen?
gruß!
 
mit
PHP:
if (mail("info....")) {
header("Location: danke_mail.html");
}
 
Zuletzt bearbeitet:
bei mir kommt dann folgende fehlermeldung
Warning: Cannot modify header information - headers already sent by (output started at /is/htdocs/51150/www........de/mailer.php:5) in /is/htdocs/51150/www......de
 
Vor dem befehl header darfst du kein einziges zeichen ausgeben. Also kein echo und nix. Dann muss es es gehen.
 
hab die echos ausgeklammert aber es geht leider immer noch nicht, bin nicht so fit in php;-(

<?php
if($abschicken) {
if(empty($name) || empty($email) || empty($text)){
//echo "Bitte gehen Sie zur&uuml;ck und f&uuml;llen Sie alle Felder aus!";
}else{
while(list($feld,$wert)=each($HTTP_POST_VARS)){
if($feld!="abschicken"){
$mailnachricht.=ucfirst($feld).": $wert\n";
}
}
$mailnachricht.="\nDatum/Zeit: ";
$mailnachricht.=date("d.m.Y H:i:s");
$mailbetreff="Kontakt: ";
$mailbetreff.=$HTTP_POST_VARS[betreff];
if (mail("info@localhost.de", $mailbetreff, $mailnachricht, "From: $email")); {
header("Location: http://www.localhost.de/danke_mail.html");
}
}
}else{
//echo "Ein Fehler ist aufgetreten.";
}
?>
 
Wenn Du am Ende des PHP-Skriptes Leerzeichen hast, also nach der Letzten Zeile

?>

noch Leerzeilen, dann werden diese mit Header-Angaben als ein Leerzeichen ausgegeben, et voila "header already sent"! Nach dem abschließenden ">"-Zeichen darf absolut nichts mehr kommen ( nat. auch nichts vor dem Skript). Dann sollte es gehen!
 
Hallo,

}else{
while(list($feld,$wert)=each($HTTP_POST_ VARS)){

müßte es nicht
...
each($HTTP_POST_VARS)){
....
ohne Leerschritt?

Viele Grüße
Michael
 
hab es jetzt den code nach euren tipps umgestellt
<?php
if($abschicken) {
if(empty($name) || empty($email) || empty($text)){
header("Location: http://www.localhost.de/nochmal_mail.html");
}else{
while(list($feld,$wert)=each($HTTP_POST_VARS)){
if($feld!="abschicken"){
$mailnachricht.=ucfirst($feld).": $wert\n"; }
}
$mailnachricht.="\nDatum/Zeit: ";
$mailnachricht.=date("d.m.Y H:i:s");
$mailbetreff="Kontakt: ";
$mailbetreff.=$HTTP_POST_VARS[betreff];
if (mail("info@localhost.de", $mailbetreff, $mailnachricht, "From: $email")){
header("Location: http://www.localhost.de/danke_mail.html");
}
}else{
header("Location: http://www.localhost.de/fehler_mail.html");
}
?>
bekomme jetzt folgende fehler meldung, komischerweise wir die mail trotz dieser fehlermeldung versendet

Parse error: parse error, unexpected T_ELSE in /is/htdocs/51150/www.localhost.de/fever/php/mailer.php on line 20
 
Also Syntaxfehler musst Du schon alleine suchen...
Tipp: zaehl mal die Klammern bzw. ruecke Deinen Code ein.
Oder Klammere so:
if ()
{
....
...
}

Du hast ein else ohne if.
 
Genau, Besser ist ohnehin:

(a) eine Strukturierung durch Einrücken
(b) einen Editor verwenden,d er Klammerpaare anzeigen lassen kann!

PHP:
if (a==b)
{
  if (!c)
  {
  } // end if kein Wert für c
} // end if a==b
else
{

} // end else a==b

Das ist zwar mehr Tipparbeit, aber seeehr dankbar, wenn aus einem Klammerpaar mal einige hundert Codezeilen werden! Ich mache einen TAB je Klammerpaar!
 
tja, das ist eine philosophiefrage, die seit jahrzehnten die programmierer trennt:
Die einen:

if ($dies)
{
das();
}
else
{
dasandere();
}

die anderen:

if ($dies) {
das();
} else {
dasandere();
}

ich bevorzuge letztere version, da man da unnötige zeilen einspart. einrücken ist aber unerlässlich (kann sogar TextEdit aber stelle sicher, dass du unter "Einstellungen" "reiner Text" auswählst)
btw: wie rückt man eigentlich hier im forum ein? Tabulator macht er nicht und mehrere Leerzeichen verschluckt er.
 
Zuletzt bearbeitet:
@timoken:
Da hast Du sicher recht! Ich empfehle meine Version, weil sie sich in Jahren bewährt hat und für mich das ändern auch mehrere Jahre alter Dateien erleichtert! Diese asymetrische Variante der Klammern empfinde ich als lesehemmend und die Zusatzzeilen tuen dem PHP-Interpreter eh nicht weh, der skipped alle Whitespaces inklusive CR und LF! Aber wer Deine Variante besser lesen kann, ist nat. auch bestens orientiert. Wichtig ist ja nur, daß man an später denkt und sich die Mühe der Struktur UND des Kommentars macht!
 
stimmt. ist alles was persönliches. ich komme halt mit meiner variante besser klar (hat sich auch 10 jahre bewährt ;-).

anyway: eine von beiden versionen konsequent beherzigt und eine ausreichende kommentierung und dann kann auch jemand anders später an deinem code arbeiten. sollte man sich direkt von anfang an angewöhnen.
 
@timoken:

Lust auf einen Klammer-Flame ? :D :D :D

Nein, Deinem Statement ist nichts mehr hinzuzufügen!
 
Zurück
Oben Unten