1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

PHP Formular abändern Variable

Discussion in 'Web-Know-how für die Homepage' started by stei80, Jan 8, 2008.

Thread Status:
Not open for further replies.
  1. stei80

    stei80 Kbyte

    Hallo!

    Ich habe auf meiner Homepage ein PHP Script, das das Kontaktformular auswertet und den Inhalt per eMail an mich weiterleitet. Außerdem erhält der Benutzer, der das Formular ausfüllt automatisch eine Autoresponse-Antwort.

    Nun meine Frage, kann man dieses Script (siehe im Folgenden) so anpassen, dass dieses Autoresponse mit persönlicher Anrede geschickt wird. Hab ich schon mal so wo gesehen, fand ich super.

    Das Kontaktformular besteht aus den Feldern eMail, Anrede, Name und Vorname.

    Ich habe auch schon ein bisschen herumexperimintiert und zwar bei: $messagetosubmitter = "Vielen Dank für Ihre eMail.
    Hab die Variable $_POST['eMail'] eingefügt und hat auch funktioniert. Wie mach ich das aber dass die gewünschten Variablen alle aufgezählt werden, und zwar folgendermaßen:

    Guten Tag "Variable Anrede" "Variable Vorname" Variable Name" vielen Dank für Ihre eMail-Nachricht.

    Sie hören von mir BLA BLA usw.

    Mit freundlichen Grüßen von meinem Wohnort nach "Variable Ort"



    Hier ist der PHP-Code des Scriptes:
    <?php
    $adminemail = 'IhreEmail@IhreDomain.de';

    $usesecimage = '';

    $controlvars = ' thankspage submitteremail ccsubmitter messagetosubmitter ';
    $messagetoadmin = $_POST['eMail'] ." hat folgende Anfrage über das Kontaktformular gesendet:


    ";

    if (!function_exists('geturl'))
    {
    function geturl($url)
    {
    if (extension_loaded('curl'))
    {
    $user_agent = 'Mozilla/4.0 (compatible; MSIE 6.02; PHP)';
    $ch = curl_init();
    curl_setopt ($ch, CURLOPT_URL, $url);
    curl_setopt ($ch, CURLOPT_USERAGENT, $user_agent);
    curl_setopt ($ch, CURLOPT_HEADER, false);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 15); // Timeout nach 5 Sekunden
    curl_setopt ($ch, CURLOPT_TIMEOUT, 15); // Timeout nach 5 Sekunden
    curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, true);
    $result = curl_exec ($ch);
    curl_close ($ch);
    // curl_error($ch); // fuer Debugmodus
    return $result;
    }

    if (version_compare("4.3.0", phpversion(), "<"))
    {
    $filecontents = @file_get_contents($url);
    }
    else
    {
    $fd = @fopen($url, 'rb');
    $filecontents = "";
    do
    {
    $data = @fread($fd, 8192);
    if (strlen($data) == 0)
    {
    break;
    }
    $filecontents .= $data;
    } while(true);
    @fclose ($fd);
    }
    return $filecontents;
    }
    }

    if (!isset($_POST['messagetosubmitter'])) $messagetosubmitter = "Vielen Dank für Ihre eMail.


    ";
    else $messagetosubmitter = $_POST['messagetosubmitter'];

    while(list($key, $value) = each($_POST))
    {
    if (!stristr($controlvars, ' '. $key .' '))
    {
    $messagetoadmin .= $key .': '. $value .'

    ';
    $messagetosubmitter .= $key .': '. $value .'

    ';
    }
    }
    $submitter = $_POST['eMail'];
    if ($submitter == '') $submitter = '';
    if (strstr($submitter, "\n")!==false || strstr($submitter, "\r")!==false || strlen($submitter) > 50) die("Pech, Du gemeiner Spammer.");

    if ($usesecimage)
    {
    $curr_path = getcwd();
    chdir($usesecimage); // Geht zum EdeV Verzeichnis
    require 'start.php';
    if (strtolower($_POST['securityimage']) != securityimagevalue()) die("Sie haben das Sicherheitsbild nicht korrekt übertragen.");
    chdir($curr_path); // kommt zurück zum Original Verzeichnis
    }

    mail($adminemail, 'Kontaktaufnahme'. stripslashes($_POST['subject']), stripslashes($messagetoadmin), 'From: '. $submitter);

    if ($_POST['ccsubmitter'] == 'yes')
    {
    mail($eMail, 'Ihre Anfrage '. stripslashes($_POST['subject']), stripslashes($messagetosubmitter), 'From: '. $adminemail);
    }
    if ($_POST['autoresponse'] != '')
    {
    $body = geturl($autoresponse);
    mail($eMail, 'Re: '. stripslashes($_POST['subject']), stripslashes($body), 'From: '. $adminemail);
    }
    header('Location: '. $_POST['thankspage']);
    // Falls die Weiterleitung nicht funktioniert
    die('<meta http-eqiv="refresh" content="0;url='. $_POST['thankspage'] .'">');


    ?>



    Ist das irgendwie mit diesem Script machbar.
    Wenn jemand ein anderes Script kennt, dass meinen Wünschen gerecht werden kann, lasst es mich bitte wissen.

    Besten Dank

    stei80
     
  2. Felidae1

    Felidae1 Kbyte

    Hi. Ich hab mich nicht durch das ganze Script durcharbeitet aber so wie du das zusammenbasteln willst müsste das folgendermaßen gehen.

    Code:
    "Guten Tag ".$_POST['anrede']." ".$_POST['vorname']." ".$_POST['name'].", vielen Dank für Ihre eMail-Nachricht.<br />Sie hören von mir BLA BLA usw.<br />Mit freundlichen Grüßen von meinem Wohnort nach ".$_POST['ort']
    Musste halt mal sehen wie du das verschickt bekommst. Sagtest ja, dass es mit der Variable email schon geklappt hat. Mach es genau so..

    Das da oben ist nicht getestet, aber vileicht gehts ja. ^^ Müsste eigentlich meiner Meinug nach ^^

    mfg.
     
  3. stei80

    stei80 Kbyte

    Hallo Felidae1!

    vielen lieben Dank für Deine Hilfestellung. Es funktioniert genauso wie ich es mir vorgestellt habe.

    Ich hätte aber noch eine kleine Denksportaufgabe:

    Kann man das Script evtl. noch so anpassen, dass man oben als Kopf Vielen Dank hat und darunter die eingebenen Daten und dann am Schluß nochmals Mit freundlichen Grüßen Name und Adresse.

    Geht das?

    Vielen Dank, ihr habt mir aber schon mit dem anderen sehr geholfen

    stei80

    PS: Weiß jemand noch zufällig, wie man die einzelnen Angaben im Fomrular anpassen kann, dass diese in einer bestimmten Reihenfolge erscheinen
     
  4. Felidae1

    Felidae1 Kbyte

    Hi.. Dein PS hab ich nur so halb verstanden? Willst die die Felder im Formular, welches ausgefüllt wird, anders sortieren? Dann guck dir den HTML Text an und kopier ein Feld ein bisschen höher oder änder es so wie es dir gefällt. Wenn das das ist was ich vermute... ^^

    Ok, zu dem anderen.. Klar. Wiso sollte das nicht gehen.

    Ich erklär dir jetzt mal wie das funktioniert. Dann kannst du es selbst nach deinen Wünschen ändern.

    Also ein Text beginnt mit " und endet auch damit. Einen Zeilenumbruch machst du mit <br />. Wenn du zwei davon hinter einander machst entsteht eine Leerzeile. Willst du aber eine Variable benutzen musst du erstmal den begonnenen Text mit einem " beenden. Es folgt ein . der dafür steht, dass jetzt etwas an den String angefügt wird. Dann kannst du die Variable einfügen. Weillst du mit dem text weitermachen kommt wieder ein . und dann " mit dem Text. Willst du eine Variable nach einer Variablen machen machst du nur den Punkt und gibst die nächste Variable aus. Allerdings wirst du meistens trotzdem ein ." ". dazwischen machen, damit beispielsweise nach dem Vornamen ein Leerzeichen kommt.

    Das ist alles.

    mfg.
     
  5. stei80

    stei80 Kbyte

    Hallo!

    Nein, das ist mir schon klar, wenn ich auf der HTML Seite das Formular-Feld höher setze als das andere, dass es dann auch in der Ausgabe-eMail so in dieser Reihenfolge sortiert wird.

    Mein Formular auf der Homepage schaut aber so aus, dass es zweispaltig ist und auf der linken Seite von oben nach unten Anrede, Vorname, Name, Strasse, PLZ, Ort, Tel, Fax und eMail steht. Auf der rechten Seite hingegen verschiedene Sachen zum ankreuzen, bspw. Prospektanfordern, Reservieren, etc. und Newsletter abonnieren.

    Wie kann man das jetzt so einstellen, dass in der eMail erst die Adressdaten kommen und dann weiter unten die gewünschten Optionen.
    Zur Zeit ist es so, dass das ganze ein wenig durcheinander ankommt (Anrede, Vorname, Prospektanforderung, Name, Strasse, Newsletter, PLZ, Ort.

    Vielleicht gibt es ja eine Möglichkeit dieses irgendwie bei PHP einzustellen oder auch im Formular?!



    Und beim zweiten Punkt meine ich, dass es so ausschauen soll, dass man die Autoresponse-Mail so erstellt, dass sie so ausschaut:

    Sehr geehrter Herr Max Mustermann,

    vielen Dank für Ihre Anfrage. Wir werden diese so schnell wie möglich bearbeiten.

    Folgende Daten haben Sie eingegeben:

    !!!Dann erscheinen alle eingegeben Formulardaten!!!

    Mit freundlichen Grüßen nach Musterhausen

    Ihr Musterhotel
    So und SO
    12345 Musterstadt
    Tel. 09872/9?739
    www . musterhotel . eu



    Vielleicht findet ja jemand eine Lösung, wie man das noch so hinbekommen kann, aber mit dem bereits gelösten, bin ich eigentlich auch schon recht zufrieden.

    Vielen Dank im Voraus.

    stei80
     
  6. Felidae1

    Felidae1 Kbyte

    Na das ist doch beides eigentlich das gleiche Problem. Es geht darum wie die Mails aussehen sollen, oder? Na wie du die Variablen in die Mail schreibst hab ich dir doch oben schon erklärt. So baust du den ganzen Text auf.

    Code:
    "Guten Tag ".$_POST['anrede']." ".$_POST['vorname']." ".$_POST['name'].", vielen Dank für Ihre eMail-Nachricht.<br />Sie hören von mir BLA BLA usw.<br />Mit freundlichen Grüßen von meinem Wohnort nach ".$_POST['ort']
    Das da war doch der erste Lösungsansatz. Und den veränderst du dann so wie er dir gefällt. Die Regeln dazu stehen doch oben oder um was genau geht es? Verstehe nicht so ganz wo das Problem liegt.

    mfg.
     
Thread Status:
Not open for further replies.

Share This Page