Nach einer PHP Abfrage auf eine HTML Seite weiterleiten

Diskutiere das Thema Nach einer PHP Abfrage auf eine HTML Seite weiterleiten im Forum Web-Programmierung.

  1. taz1978

    taz1978 Thread Starter Mitglied

    Beiträge:
    38
    Zustimmungen:
    0
    Mitglied seit:
    12.06.2004
    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ß!
     
  2. balufreak

    balufreak Mitglied

    Beiträge:
    1.564
    Zustimmungen:
    28
    Mitglied seit:
    12.10.2003
    mit
    PHP:
    if (mail("info....")) {
    header("Location: danke_mail.html");
    }
     
  3. taz1978

    taz1978 Thread Starter Mitglied

    Beiträge:
    38
    Zustimmungen:
    0
    Mitglied seit:
    12.06.2004
    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
     
  4. balufreak

    balufreak Mitglied

    Beiträge:
    1.564
    Zustimmungen:
    28
    Mitglied seit:
    12.10.2003
    Vor dem befehl header darfst du kein einziges zeichen ausgeben. Also kein echo und nix. Dann muss es es gehen.
     
  5. taz1978

    taz1978 Thread Starter Mitglied

    Beiträge:
    38
    Zustimmungen:
    0
    Mitglied seit:
    12.06.2004
    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.";
    }
    ?>
     
  6. wegus

    wegus Mitglied

    Beiträge:
    16.158
    Zustimmungen:
    2.717
    Mitglied seit:
    13.09.2004
    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!
     
  7. mikne64

    mikne64 Mitglied

    Beiträge:
    3.112
    Zustimmungen:
    92
    Mitglied seit:
    02.04.2004
    Hallo,

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

    Viele Grüße
    Michael
     
  8. taz1978

    taz1978 Thread Starter Mitglied

    Beiträge:
    38
    Zustimmungen:
    0
    Mitglied seit:
    12.06.2004
    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
     
  9. aguilera

    aguilera Mitglied

    Beiträge:
    48
    Zustimmungen:
    0
    Mitglied seit:
    09.03.2004
    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.
     
  10. wegus

    wegus Mitglied

    Beiträge:
    16.158
    Zustimmungen:
    2.717
    Mitglied seit:
    13.09.2004
    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!
     
  11. timoken

    timoken Mitglied

    Beiträge:
    832
    Zustimmungen:
    8
    Mitglied seit:
    11.11.2003
    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.
     
  12. wegus

    wegus Mitglied

    Beiträge:
    16.158
    Zustimmungen:
    2.717
    Mitglied seit:
    13.09.2004
    @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!
     
  13. timoken

    timoken Mitglied

    Beiträge:
    832
    Zustimmungen:
    8
    Mitglied seit:
    11.11.2003
    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.
     
  14. wegus

    wegus Mitglied

    Beiträge:
    16.158
    Zustimmungen:
    2.717
    Mitglied seit:
    13.09.2004
    @timoken:

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

    Nein, Deinem Statement ist nichts mehr hinzuzufügen!
     
Die Seite wird geladen...
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Akzeptieren Weitere Informationen...