nicht angemeldet (Anmelden)

Kategorien

Vanilla 1.1.8 ist ein Produkt von Lussumo. Weitere Informationen (englisch): Documentation, Community Support.


    • CommentAuthoreru
    • CommentTimeApr 10th 2008 bearbeitet
     
    hallo liebe leute,
    habe vor 8 jahren mal angefangen, mit php zu arbeiten - leider seitdem nichts mehr gemacht und muss deshalb quasi bei 0 anfangen.

    für die (non-profit-)kunstveranstaltung transit station gibt es auf der website ein html-anmeldeformular für künstler.

    nun möchte ich dieses html-formular mit der mail-funktion von php versenden, da es mit reinem html zu oft nicht klappt - und habe massive probleme... (eigentlich mehrere).
    das formular besteht aus 10 eingabefeldern, 5 textareas, 8 checkboxen (einer gruppe - mein zweites problem) und 2 radio-buttons (einer gruppe).
    das dritte problem ist, dass ich gerne eine möglichkeit für datei-upload bei 3 der 5 textareas anbieten würde......
    aber mir wäre schon sehr geholfen, wenn ich die grundfunktionalität hinbekommen würde.

    php kann max. 5 parameter an die funktion mail() übergeben, also bin ich gezwungen, einiges (in einer variablen?) zusammenzufassen und durch zeilenumbrüche leichter zugänglich bzw. lesbar zu machen...

    ...und leider bekomme ich's einfach nicht gebacken...
    hier das php-script in verkürzter form - so funktioniert es, nur brauche ich eben alle formularbereiche.

    <?php
    #-------------------------------------------
    # Globale Daten:
    $mailto = "contact@transitstation.de";
    $form_file = "antragsformular.html";
    $thanks_file = "danke.html";
    $standard_legend = "Hinweis";
    $error_legend = "Fehler";
    #-------------------------------------------
    # Funktion was ist zu tun
    if(isset($_POST['feedback']))
    check_form_data();
    else
    show_form_data(false);
    #-------------------------------------------
    # Funktion show_form_data():
    function show_form_data($with_error) {
    global $form_file, $standard_legend, $error_legend;
    $page = file_get_contents($form_file);
    $page = preg_replace("/\[\%self\%\]/",
    $_SERVER['SCRIPT_NAME'], $page);
    if($with_error == true)
    $page = preg_replace("/\[\%legend\%\]/",
    $error_legend, $page);
    else
    $page = preg_replace("/\[\%legend\%\]/",
    $standard_legend, $page);
    echo $page;
    exit();
    }
    #-------------------------------------------
    # Funktion check_form_data():
    # Formulareingaben prüfen
    function check_form_data() {
    //echo "<pre>", var_dump($_POST), "</pre>";
    if(empty($_POST['vorname']) or empty($_POST['nachname']) or empty($_POST['adresse']) or empty($_POST['medium']) or empty($_POST['contractterms']))
    show_form_data(true);
    else
    mail_and_thanks();
    }
    #-------------------------------------------
    # Funktion mail_and_thanks():
    function mail_and_thanks() {
    global $mailto, $thanks_file;
    $headers = "From: {$_POST['vorname']} {$_POST['nachname']} ";
    $headers .= "<{$_POST['email']}>\r\n";
    $headers .= "Content-Type: text/plain; charset=ISO-8859-1\r\n";
    $headers .= "Content-Transfer-Encoding: 8bit";
    mail($mailto, $_POST['subject'], $_POST['adresse'], $headers);
    $page = file_get_contents($thanks_file);
    echo $page;
    exit();
    }
    ?>

    ich wäre sehr froh über hilfe bei meinem problem
    danke
    eru
    • CommentAuthorCimme
    • CommentTimeApr 17th 2008 bearbeitet
     
    Hallo eru,

    ich hab den Code nur kurz überflogen und kann nur sagen: Keine vom User eingegeben Daten ungeprüft verarbeiten.

    Wenn der Eingebende ein einfaches Anführungszeichen zusammen mit einer schließenden Klammer und einem Semikolon eingibt ist die Mail-Funktion hier abgebrochen.

    Zudem rufst du eine erst spätere Funktion weiter oben auf.

    Grundsätzlich ist es sinnvoll, wie folgt bei der Programmierung vorzugehen (dies ist meine Empfehlung und soll hier auch nicht als Standart gelten):


    - Liste was der Programmteil können soll mit Soll- und Kannfunktionen
    - Nun wird der Programmablauf nach logischen Gesichtspunkten auf dem Papier entworfen.
    - Die benötigten Funktionen werden zurechtgelegt beziehungsweise nachgeschlagen.
    - Erst jetzt wird der Code anhand (strikt) des vorher auf Papier geschriebenen Programmablaufs erstellt.
    - Jede Funktion wird auf Logik und syntaktische Fehler geprüft. (da sind wir jetzt) ;)
    - Jetzt lassen wir einige (bekannte) Tester drauf los und finden so logische und funktionale Fehler raus.


    So ist es relativ schnell ein Programm zu programmieren.

    Um auf dein Problem zurückzukommen:

    Warum verwendest du exit? Die Ganze Sache ist doch in der letzten Funktion schon abgehandelt und somit fertig.

    Die Funktion form_check_data hat bei der if-Schleife einen Fehler (die else wird nicht geöffnet und die if nicht geschlossen.

    Beim genauen Durchschauen viel mir zudem auf, dass alles etwas durcheinander ist.

    Mein Tipp wäre hier einfach mal ein stink normales Gästebuch (ohne Datenbank) vom Quelltext her anzuschauen.

    Vielleicht kommen von Webmatze oder anderen ein paar BlogEinträge zu Formulardatenverarbeitung.

    Grüße
    Cimme

    PS: vielleicht schreib ich da was übers Wochenende. :D