Ankündigung

Einklappen
Keine Ankündigung bisher.

Kontaktformular wird nicht gesendet

Einklappen

Neue Werbung 2019

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

  • Kontaktformular wird nicht gesendet

    Hallo, ich kenne mich mit php nicht wirklich aus. Ich möchte gern ein Kontaktformular erstellen mit 2 textareas (Frage 1, Frage 2) aber leider wird das Formular nicht abgesendet. Wenn ich das 2. textarea (Frage 2) weglasse dann wird es gesendet.

    Und wie werden die Labels in der email dann mit angezeigt?

    Bitte um Hilfe!

    Danke!


    Code:
    <?php
    
        $error = "";
        $successMessage = "";
    
        if($_POST){
    
    
            if(!$_POST["email"]){
    
                $error .= "Eine Emailadresse wird benötigt.<br>";
    
            }
    
            if(!$_POST["titel"]){
    
               $error .= "Ein Titel wird benötigt.<br>";
    
            }
    
            if(!$_POST["content"]){
    
                $error .= "Inhalt wird benötigt.<br>";
    
            }
    
            if(!$_POST["contentB"]){
    
                $error .= "Inhalt wird benötigt.<br>";
    
            }
    
            if (filter_var($_POST["email"], FILTER_VALIDATE_EMAIL) == false) { 
                $error .= "Die Emailadresse ist ungültig.<br>";
            }
    
            if($error != ""){
    
                $error = '<div class="alert alert-danger" role="alert"><p><b>Es gab fehler in deinem Formular:</b></p>'.$error. '</div>';
    
            }else{
    
                $emailTo = "meine-mail@meinemail.de";
    
                $subject = $_POST['titel'];
    
                $content = $_POST['content'];
    
                $contentB = $_POST['contentB'];
    
                $headers = "From: ".$_POST['email'];
    
                if(mail($emailTo, $subject, $content, $contentB, $headers)){
    
                   $successMessage=  '<div class="alert alert-success" role="alert"><p><b>Alles hat geklappt. Wir antworten dir so schnell wir können</b></p></div>';
    
    
                }else{
    
                    $error = '<div class="alert alert-danger" role="alert"><p><b>Das Formular konnte nicht übertragen werden. Bitte versuche es noch einmal.</b></p></div>';
    
                }
    
            }
    
    
        }else{
    
    
        }
    
    
    
    ?>
    
    
    <!DOCTYPE html>
    <html lang="de">
      <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
    
        <title>Kontaktformular</title>
    
         <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js">
              </script>
        <!-- Bootstrap -->
       <!-- Das neueste kompilierte und minimierte CSS -->
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
    
        <!-- Optionales Theme -->
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap-theme.min.css">
    
        <!-- Das neueste kompilierte und minimierte JavaScript -->
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
      </head>
      <body>
    
          <div class="container">
    
           <h1>Kontaktiere uns!</h1>
    
              <div id="error"><?php echo $error;
                    echo $successMessage;  
    
                  ?></div>
    
    
    
            <form method="post">
              <div class="form-group">
                <label for="beispielFeldEmail1">Email-Adresse</label>
                <input name="email" type="email" class="form-control" id="email" placeholder="Email-Adresse">
              </div>
              <div class="form-group">
                <label for="titel">Titel</label>
                <input type="text" name="titel" class="form-control" id="titel" >
              </div>
    
                <div class="form-group">
                <label for="anliegen">Frage 1</label>
                <textarea class="form-control" name="content" id="content" rows="3"></textarea>
              </div>
    
    
                <div class="form-group">
                <label for="anliegenzwei">Frage 2</label>
                <textarea class="form-control" name="contentB" id="contentB" rows="3"></textarea>
              </div>
    
    
              <button type="submit" id="submit" class="btn btn-primary">Abschicken</button>
            </form>  
    
          </div>
    
          <script type="text/javascript">
    
             $("form").submit(function( event ) {
    
                  event.preventDefault();
    
                  var error = "";
    
                  if($("#email").val() == ""){
    
                      error += "<p>Der Email ist leer. Bitte trage sie ein.</p>";
    
                  }
    
                  if($("#titel").val() == ""){
    
                      error += "<p>Der Titel ist leer. Bitte trage ihn ein.</p>";
    
                  }if($("#content").val() == "" ){
    
                      error += "<p>Das Inhaltfeld ist leer, bitte trage etwas ein. </p>";
    
                  }
    
                 }if($("#contentB").val() == "" ){
    
                      error += "<p>Das Inhaltfeld ist leer, bitte trage etwas ein. </p>";
    
                  }
    
                  if(error != ""){
    
                      $("#error").html('<div class="alert alert-danger" role="alert"><p><b>Es gab fehler in deinem Formular:</b></p>' + error + '</div>');
    
    
                  }else{
    
                      $("form").unbind('submit').submit();
    
                  }
    
    
                });
    
    
    
    
          </script>
    
      </body>
    </html>

  • #2
    Moin, Moin!

    Wenn du das error_reporting hochschraubst, wirst du sicherlich feststellen, dass du die Mail() Methode falsch benutzt.
    @see http://php.net/manual/de/function.mail.php

    Davon abgesehen solltest du eh lieber phpmailer oder vergleichbares benutzen.

    Den Inhalt / den Body deiner E-Mail kannst du einfach als String Zusammenketten, so bekommst du da auch Beschriftungen für deine Inhalte rein und formatierung.

    PHP-Code:
    $mailBody "Hallo!\n\n";
    $mailBody .= "Du hast folgendes in das Formular eingetragen: ";
    $mailBody .= $content."\n\n".$contentB;
    //Usw. 
    Wenn du E-Mails mit einem beliebigen, frei eintragbarem Absender verschickst, landen die zu 98% im Spam oder werden gar nicht erst zugestellt.
    Lege dir ein entsprechendes Postfach an und versende die E-Mails darüber.

    Soweit erstmal die Kurzfassung.

    Am JavaScript gibt es auch noch einiges auszumerzen.

    Kommentar


    • #3
      Versuch mal das:

      HTML-Code:
      <form method="post" id="beispielform">    
          <div class="form-group">        
              <label for="beispielFeldEmail1">Email-Adresse</label>        
              <input name="email" type="email" class="form-control" id="email" placeholder="Email-Adresse">    
          </div>      
      
          <div class="form-group">        
              <label for="titel">Titel</label>        
              <input type="text" name="titel" class="form-control" id="titel" >    
          </div>      
      
          <input type="submit" id="submit" class="btn btn-primary">Abschicken</button>
      </form>  
      
      <div class="form-group">    
          <label for="anliegen">Frage 1</label>    
          <textarea form="beispielform" class="form-control" name="content" id="content" rows="3"></textarea>
      </div>  
      
      <div class="form-group">    
          <label for="anliegenzwei">Frage 2</label>    
          <textarea form="beispielform" class="form-control" name="contentB" id="contentB" rows="3"></textarea>
      </div>

      Kommentar


      • #4
        Zitat von Gnom42 Beitrag anzeigen
        Davon abgesehen solltest du eh lieber phpmailer oder vergleichbares benutzen.
        Solltest du unbedingt! mail() ist nicht dazu gedacht "roh" Mails zu versenden, es müssen alle RFC beachten werden!

        https://www.php-rocks.de/thema/51-ht...phpmailer.html

        https://php-de.github.io/jumpto/mail-class/

        The string "()()" is not palindrom but the String "())(" is.

        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          @Gnom42 Danke für die schnelle Antwort! Ich werd mir PHPMailer gleich mal anschauen!

          @MrChangelog Das funktioniert leider nicht!

          @hausl Danke für die links! Ich werde mir PHPMailer gleich mal anschauen

          Kommentar


          • #6
            Das ist fehlerhaft
            HTML-Code:
              <label for="anliegenzwei ...    
              <textarea ... name="contentB"
            Schau es dir noch mal wie es richtig gemacht wird und verwende den Validator um dein HTML auf Fehler zu überprüfen.
            Wenn du deinen Input Elementen das Attribut required mitgibst, kannst du auf Javascript komplett verzichten.

            Warum benennst du den Betreff mit titel?
            PHP-Code:
               $subject $_POST['titel']; 
            Verwende doch einfach aussagekräftige Namen, damit du hinterher nicht herum rätseln musst, was das mal zu bedeuten hatte.

            Kommentar


            • #7
              Ich hab es jetzt mit PHPMailer umgesetzt und alles funktioniert so wie ich es wollte. Danke für eure Hilfe und Tips!

              Kommentar

              Lädt...
              X