Pierre Schubert: Ordnen von Formularfelder in E-mail

Hallo,

ich benutze den einfachen Formmailer von Patrick Canterino

http://aktuell.de.selfhtml.org/tippstricks/php/form-mail/index.htm

und habe aber ein paar Probleme. Vorweg: Ich bin ein Newbie in PHP.

Der Formmailer schickt mir ja eine Nachricht mit den ausgefüllten Werten und das macht er in einer Reihenfolge von oben nach unten. Ich habe jetzt aber die Formularfelder in eine Tabelle gesteckt

http://s86212963.einsundeinsshop.de/bs_shopdata/frage.php

und die Werte werden mir jetzt durcheinander zugeschickt.

ungefähr so:
Anrede:****
Straße:****
Vorname:****
PLZ:****
Nachname:****
Ort:****

anstatt von:
Anrede:****
Vorname:****
Nachname:****
Straße:****
PLZ:****
Ort:****

Wie kann ich dich Werte ordnen?

Danke im Voraus

Pierre

  1. Hallo Pierre.

    http://aktuell.de.selfhtml.org/tippstricks/php/form-mail/index.htm
    Wie kann ich dich Werte ordnen?

    Ordne die Eingabefelder deines Formulares entsprechend der gewünschten Reihenfolge an.

    Freundschaft!
    Siechfred

    --
    Wissen bedeutet zu wissen, wo es steht.
    1. wenns das so leicht wäre... ich brauche aber der form wegen eine ganz bestimmte reihenfolge...

      hier noch mal der Link wie ich es gemacht habe:
      http://s86212963.einsundeinsshop.de/bs_shopdata/frage.php

      1. Hallo Pierre.

        wenns das so leicht wäre... ich brauche aber der form wegen eine ganz bestimmte reihenfolge...

        Schlecht. Die Reihenfolge innerhalb der HTML-Datei bestimmt die Reihenfolge in der E-Mail.

        http://s86212963.einsundeinsshop.de/bs_shopdata/frage.php

        Ja, Verdacht bestätigt. Da wird dir wohl nix anderes übrig bleiben, als die E-Mail Stück für Stück zusammen zu setzen. Allerding solltest du $_POST sehr vorsichtig einsetzen, also vorher entschärfen, einfaches Beispiel:

        $name = htmlspecialchars(stripslashes(trim($_POST['name'])));
        $vorname = htmlspecialchars(stripslashes(trim($_POST['vorname'])));

        usw. usf.

        $mailtext = "Name: ".$name."\n";
        $mailtext += "Vorname: ".$vorname."\n";

        usw. usf.

        Freundschaft!
        Siechfred

        --
        Wissen bedeutet zu wissen, wo es steht.
        1. whow! Vielen Dank! Aber könntest du mir das oben in den PHP-Code einfügen? Ich habe keine Ahnung... Den Rest bekomme ich schon hin! Nochmal vielen Dank!

          <?php

          $strEmpfaenger = '*****.******@t-online.de';
          $strFrom       = '"Frage zu einem Artikel"';
          $strSubject    = 'Frage zu einem Artikel';
          $strReturnhtml = 'danke.html';
          $strDelimiter  = ":\t";

          if($_POST)
          {
           $strMailtext = "";

          while(list($strName,$value) = each($_POST))
           {
            if(is_array($value))
            {
             foreach($value as $value_array)
             {
              $strMailtext .= $strName.$strDelimiter.$value_array."\n";
             }
            }
            else
            {
             $strMailtext .= $strName.$strDelimiter.$value."\n";
            }
           }

          if(get_magic_quotes_gpc())
           {
            $strMailtext = stripslashes($strMailtext);
           }

          mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom)
            or die("Die Mail konnte nicht versendet werden.");
           header("Location: $strReturnhtml");
           exit;
          }

          ?>

          1. Hallo Pierre.

            Aber könntest du mir das oben in den PHP-Code einfügen? Ich habe keine Ahnung... Den Rest bekomme ich schon hin! Nochmal vielen Dank!

            Ich will dir nicht zu nahe treten, aber das, was du ändern musst, habe ich dir gepostet. Wenn du an einer Stelle nicht weiter kommst, lies hier nach: http://de.php.net/manual/de/index.php. Du solltest wissen, was du tust, wenn du eine so mächtige Technologie wie PHP einsetzen willst.

            Freundschaft!
            Siechfred

            --
            Wissen bedeutet zu wissen, wo es steht.
        2. Hello,

          Ja, Verdacht bestätigt. Da wird dir wohl nix anderes übrig bleiben, als die E-Mail Stück für Stück zusammen zu setzen. Allerding solltest du $_POST sehr vorsichtig einsetzen, also vorher entschärfen, einfaches Beispiel:

          $name = htmlspecialchars(stripslashes(trim($_POST['name'])));
          $vorname = htmlspecialchars(stripslashes(trim($_POST['vorname'])));

          usw. usf.

          Alle Felder, die im Mailbody landen, können so formatiert werden, wie immer sie wollen. Im Extremfall werden sie eben einfach nicht übertragen.

          Aber alle Felder, die im Mailheader landen, sollten "kastriert" werden, da sie ggf. Funnktionen der Mailserverkette beeinflussen können und damit kritisch sind.

          Harzliche Grüße aus http://www.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau
          1. Hallo Tom.

            $name = htmlspecialchars(stripslashes(trim($_POST['name'])));
            $vorname = htmlspecialchars(stripslashes(trim($_POST['vorname'])));

            usw. usf.

            Alle Felder, die im Mailbody landen, können so formatiert werden, wie immer sie wollen. Im Extremfall werden sie eben einfach nicht übertragen.

            Nun, es kommt darauf an. Will man die Funktionalitäten eines Affenformulares nutzen, sollte es ja eine Eingabenprüfung geben, die beim Scheitern die Eingabeseite erneut auswirft und mit den bereits eingegebenen Werten versieht. Zudem steht noch die Problematik von HTML-Mails im Raum, sodass ich es für gar nicht so verkehrt halte, die Kastration auch für die im Mailbody zu übertragenden Felder vorzunehmen.

            Aber alle Felder, die im Mailheader landen, sollten "kastriert" werden, da sie ggf. Funnktionen der Mailserverkette beeinflussen können und damit kritisch sind.

            Ja, volle Zustimmung.

            Freundschaft!
            Siechfred

            --
            Wissen bedeutet zu wissen, wo es steht.
            1. Hello,

              Alle Felder, die im Mailbody landen, können so formatiert werden, wie immer sie wollen. Im Extremfall werden sie eben einfach nicht übertragen.

              Nun, es kommt darauf an. Will man die Funktionalitäten eines Affenformulares nutzen, sollte es ja eine Eingabenprüfung geben, die beim Scheitern die Eingabeseite erneut auswirft und mit den bereits eingegebenen Werten versieht. Zudem steht noch die Problematik von HTML-Mails im Raum, sodass ich es für gar nicht so verkehrt halte, die Kastration auch für die im Mailbody zu übertragenden Felder vorzunehmen.

              Da hast Du natürlich recht. danke für den Hinweis. HTML- und überhaupt Mime-Mails mit externen Inhalten können da noch "interessante" Effekteo hervorrufen, da neben dem Plain Text Reader auch Picture Renderer und HTML-Parser nebst Nachladefunktionalität involviert sind. Und das die Löcher haben, ist ja durch die meldungen von 15.09 zum Thema "JPEG" mal wieder klar geworden.

              Ich habe hier den Eindruck gewonnen, dass wir uns mal wieder "kurz vor Stralingrad" befinden.

              Harzliche Grüße aus http://www.annerschbarrich.de

              Tom

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
              Nur selber lernen macht schlau