Ankündigung

Einklappen
Keine Ankündigung bisher.

E-Mail Formular: Variablen in $message einfügen?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • E-Mail Formular: Variablen in $message einfügen?

    Hallo allerseits

    Ich versuche gerade ein E-Mail Formular mit PHP zu bauen.
    Als Grundlage benutze ich dies "Bulletproof Contact Form" von digital-web.com.
    (Ein kleines aber sehr feines Einsteiger Tutorial)

    Im Originalskript gibt es nur die Formularfelder "name, email, topic und comment".

    Ich möchte aber mehr Felder und auch checkboxes haben und habe das Formular dank guter html und css Kenntnisse schnell erweitert:

    Ich habe nun laut meinem Tutorial) meine Formular Daten an Variablen übergeben: (Auszug)

    $name = $_POST['name'];
    $firma = $_POST['firma'];
    $strasse = $_POST['strasse'];
    $ort = $_POST['ort'];
    $telefon = $_POST['telefon'];
    $email = $_POST['email'];
    $firmenbeschreibung = $_POST['firmenbeschreibung'];
    $topic = $_POST['topic'];
    $comment = $_POST['comment'];


    Im Original geht es dann so weiter:

    $to = 'info@irgendwas.com';
    $subject = "New message: $topic";
    $message = "$name said: $comment";
    $headers = "From: $email";

    mail($to, $subject, $message, $headers);

    Hier ist nun mein "absolute beginners" Problem: In der Email taucht nur die "message" und das "topic" auf.

    Wie schreibe ich da meine Variablen rein? Kann Ich "$message" mehrfach nehmen,

    oder in "$message" alle Variablen mit Komma oder so auflisten?

    Wie schreibe ich das?

    Hoffe ich habe mich verständlich ausgedrückt.
    Vielen Dank im Voraus für Eure Mühe

    Thomas

  • #2
    Du kannst den Inhalt mehrerer Variablen mit einem Punkt aneinandersetzen.

    Beispiel:

    PHP-Code:
    $message $name ' von der Firma '.$firma.' wohnhaft in '.$ort.' hat geschrieben:'.$comment
    Also einfach Variablen und Strings mittels eines Punktes verketten.
    Je mehr ich lerne, desto mehr wird mir bewusst, dass ich eigentlich nichts weiß.

    Kommentar


    • #3
      Für solche Umfangreicheren Stringverkettungen bietet sich die übersichtlichere Methode über sprintf an:
      PHP-Code:
      $message sprintf ('%s von der Firma %s wohnhaft in %s hat geschrieben: %s' ,
                          
      $name   ,
                          
      $firma  ,
                          
      $ort    ,
                          
      $comment ); 
      [COLOR="#F5F5FF"]--[/COLOR]
      [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
      [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
      [COLOR="#F5F5FF"]
      --[/COLOR]

      Kommentar


      • #4
        Jupp, so ist es natürlich schöner.

        Wollte nur die vermeintlich einfachere Methode nennen
        Je mehr ich lerne, desto mehr wird mir bewusst, dass ich eigentlich nichts weiß.

        Kommentar


        • #5
          Ich möchte dir dringend empfehlen, die Benutzereingaben, v.a. $_POST['email'], vorher genau zu prüfen. Sonst könnte mit deinem Formular allerlei auf der ganzen Welt rumgeschickt werden.
          Gruss
          L

          Kommentar


          • #6
            Hallo,
            Vielen Dank für Eure schnelle und gute Hilfe.
            Das Formular funktioniert nun so weit.

            Das mit der Sicherheit werde ich gleich diese Woche in Angriff nehmen!

            Nun würde ich gerne noch wissen, ob und wie Ich dem Output in der Email einen Textumbruch geben kann?
            Kann Ich im sprintf vielleicht html tags benutzen <p></p> bzw. <br /> oder wie stelle ich das an?

            Hier mein aktueller Code (Nur ein kleiner Auszug)

            $message = sprintf ( 'Name %s Firma %s Strasse: %s Ort %s Telefon: %s Email %s firmenbeschreibung %s typische_kunden %s ,
            $name ,
            $firma ,
            $strasse ,
            $ort ,
            $telefon ,
            $email ,
            $firmenbeschreibung) ;

            Das ganze kommt dann in der E-Mail in einer langen Zeile so an:

            Name Frank Müller Firma Müllermist Strasse Bergstr 108 Ort 12345 Irgendwo Telefon 012345 234565 Email xyz@web.de firmenbeschreibung . . .

            Ich hätte das nun gerne mindestens so:

            Name Frank Müller
            Firma Müllermist
            Strasse Bergstr 108
            Ort 12345 Irgendwo
            Telefon 012345 234565
            Email xyz@web.de
            firmenbeschreibung . . .

            Oder gerne auch mit einer Leerzeile dazwischen:

            Name Frank Müller

            Firma Müllermist

            Strasse Bergstr 108

            . . .

            Danke schon mal, Thomas

            Kommentar


            • #7
              Das kommt darauf an, ob du eine Text-Mail oder eine HTML-Mail verschickst.

              In der HTML Mail kannst du natürlich auch HTML benutzen, in der Textmail kannst du ein Zeilenumbruch mit "\n" realisieren.
              Je mehr ich lerne, desto mehr wird mir bewusst, dass ich eigentlich nichts weiß.

              Kommentar


              • #8
                PHP-Code:

                $message 
                sprintf("Name:\t%s\nFirma:\t%s\nStrasse:\t%s Ort:\t%s \nTelefon:\t%s\nEmail:\t%s\nFirmenbeschreibung:\t%s\n" ,
                    
                $name   ,$firma  ,$strasse $ort ,
                    
                $telefon $email $firmenbeschreibung) ; 
                Gruss
                L

                Kommentar


                • #9
                  Innerhalb der Stringbegrenzer funktionieren auch Zeilenumbrüche im Quellcode:
                  PHP-Code:
                  $message sprintf(
                  'Name:     %s
                  Firma:     %s

                  Strasse: %s 
                  Ort:     %s 

                  Telefon: %s
                  Email:     %s

                  Firmenbeschreibung: %s' 
                  ,
                      
                  $name   ,
                      
                  $firma  ,
                      
                  $strasse 
                      
                  $ort ,
                      
                  $telefon 
                      
                  $email 
                      
                  $firmenbeschreibung); 
                  So erhältst Du eine Art Dokumentenvorlage, die optisch besser zu bewerten ist.
                  [COLOR="#F5F5FF"]--[/COLOR]
                  [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                  „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                  [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                  [COLOR="#F5F5FF"]
                  --[/COLOR]

                  Kommentar


                  • #10
                    Habe die letzte Version genommen, funktioniert einwandfrei.
                    das ist ja echt super hier im Forum, bekomme langsam Lust auf PHP. Wer hätte das gedacht?

                    Die Umlaute aus den Formularfeldern kommen noch nicht korrekt in der E-Mail an, kann ich irgendwo die Kodierung angeben? (UTF-?

                    Dann würde ich als Steigerung gerne noch die Namen der "Legend tags" aus meinen "fieldset-Feldern" im Formular haben, wenn das geht.
                    Im Moment sieht der Code so aus:

                    'Name: %s
                    Firma: %s
                    Strasse: %s
                    Ort: %s
                    Telefon: %s
                    E-mail: %s

                    Firmenbeschreibung: %s
                    Typische Kunden: %s
                    Neue Zielgruppen: %s

                    Und Ich hätte das dann gerne in der Email z.B. so (mit den legend -tags):

                    PERSÖNLICHES
                    Name:
                    Firma:
                    Strasse:
                    Ort: %s
                    Telefon: %s
                    E-mail: %s

                    BUSINESS
                    Firmenbeschreibung: %s
                    Typische Kunden: %s
                    Neue Zielgruppen: %s


                    Geht das?
                    Thomas

                    Kommentar

                    Lädt...
                    X