PHP-Frage: Werte von variablen in E-mail verschicken!

  • Für die PHP-Profis hier:


    Ich erstelle grade ein Anfrage-Formular, bei dem man seine Anschrift und einen Kommentar angeben kann und diese dann an eine E-Mail Adresse weitergeleitet wird.


    Habe das Formular auf einer formular.htm welches die Werte der textfelder mit methode=post auf ein anfrage.php weiterleitet. PHP soll ja die Variablen einfach in einer Arry übernehmen.


    Mit einer Kontroll-Abfrage habe ich erfolgreich dafür gesorgt, dass auch alle Felder schön ausgefüllt werden vom Besucher:


    if ($_POST['ansprech'] =="" || $_POST['email'] =="" || $_POST['strasse'] =="" || $_POST['telefon'] =="" || $_POST['ort'] =="" || $_POST['plz'] =="" )
    Klappt einwandfrei.


    Aber, wenn ich dann mit mail(); die Variablen in eine Mail schicken will, bekomme ich dann gar nicht die Werte in der empfangenen Mail. ;( Der scheint die Werte aus dem html Dokument nicht zu übernehmen...


    Leider darf ich aus bestimmten Gründen hier nicht den geamten Quelltext der html und php datei reinkopieren.
    Könnt ihr mir trotzdem einen Tipp oder sogar ne Lösung geben?



    Danke im Voraus!

    Strawberries cherries and an angel's kiss in spring
    My summer wine is really made from all these things

  • Also da bei manchen php versionen entscheident (halt versionsabhängig) würd ich zuerst mal versuchen die variablen namen wie folgt zu ändern.


    aus $_POST['bla'] wird $HTTP_POST_VARS["bla"]
    wenn das nicht hilft ( unwarscheinich, dass dem so ist ), dann überprüf folgendes.


    1. steht im form folgendes <form action="anfrage.php" method="post">
    2. geht das Formular auch wieder irgendwo zu? </form> ( sind alles fehler die mir auch schon unterlaufen sind)
    3. überprüf in einer test.php einfach mal ob die werte eigentlich überhaupt da sind, also kommentiere aus der anfrage php mal alles aus zb so

    Code
    1. /*alter Inhalt*/


    und schreib dann rein

    Code
    1. echo $_POST['emai'];


    berichte dann mal hier ob der Wert also überhaupt im Dokument ankommt, je nachdem was Sache ist kann ich dir sicherlich weiterhelfen.


    Sollte der Wert richtig ankommen, achte bitte auf den richtigen Syntax der mail() Funktion:

    Code
    1. $message="Dies ist die Nachricht, wenn Variablen hier vorkommen einfach so reinschreiben zb $email";
    2. mail("bla@bub.de", "Betreff", $message);


    es bietet sich daher an solche Sachen wie $_POST['email'], vorher als $email zu deklarieren, also $email = $_POST['email']; damit du dann in der $message diese richtig verwenden kannst

  • So wie ich das sehe sagst du wenn in irgendeiner variable kein wert eingetragen ist dann führe den inhalt der if abfrage aus. jetzt weiß ich natürlich nicht was dort ausgeführt werden soll. wird dort aber die mail verschickt dann kann es natürlich nicht klappen. außerdem empfehle ich dir mal die funktion empty() anzuschauen. vielleicht kannst du mir ja einfach mal den inhalt deiner php datei per PN oder mail zukommen lassen und ich schaue mir das an. so anhand deiner beschreibung ist es schwer eine diagnose zu treffen.


    EDIT: Robert : Wenn dann gleich print_r nutzen und schauen was so übergeben wird:


    PHP
    1. print_r($_POST);
  • sorry hab von print_r nie was gehört, brauchte ich bisher nie. aber danke man lernt nie aus. hab oben was zur mail funktion ergänzt.


    Aber Moritz hat recht, so wie es da steht, sieht es so aus als ob er weiter macht wenn irgendwo kein wert drinne steht.
    Wenn in der Schleife die mail() funktion steht dann muss die if abfrage so lauten:

    Code
    1. if ($_POST['ansprech'] !="" && $_POST['email'] !="" && $_POST['strasse'] !="" && $_POST['telefon'] !="" && $_POST['ort'] !="" && $_POST['plz'] !="" )


    oder

    Code
    1. if (!($_POST['ansprech'] =="" || $_POST['email'] =="" || $_POST['strasse'] =="" || $_POST['telefon'] =="" || $_POST['ort'] =="" || $_POST['plz'] =="" ))
  • Danke erstmal euch beiden für die Hilfe, ich werde mich sofort an eure Tipps machen...


    Moritz : Nach der If-Abfrage wird natürlich ne Fehlermeldung ausgegeben


    echo "$felderleer";
    echo '<input type="button" name="back" value="Zurück!"
    onClick="history.back()">';


    und im else Bereich dann eine Funktion zur Überprüfung der E-Mailadressen-Korrektheit (was ein Wort) und dann die mail() Funktion.



    Edit:


    Mit der print_r($_POST); Anweisung bekomme ich alle Werte raus, die ich in meine Formular angegeben habe, mmh. Das funktioniert also, muss es doch an der mail() Anweisung liegen.


    Doing, es lag an der Dekleration! ich musste echt noch $email = $_POST['email']; usw. in der anfrage.php deklarieren. Dachte, sowas wäre in PHP überflüssig! :P Naja, liegt wohl an den Datentypen, die für die mail() Funktion notwendig sind.


    Danke nochmal! Wenn ich wieder Probs hab, schreib ich die in diesen Thread! Sind ja hier so behilfliche Leutlies! :)

    Strawberries cherries and an angel's kiss in spring
    My summer wine is really made from all these things

    Dieser Beitrag wurde bereits 2 Mal editiert, zuletzt von CargoOfDarkness ()