Google reCAPTCHA in Kontaktformular einbinden

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

  • Google reCAPTCHA in Kontaktformular einbinden

    Hallo,
    bei einer alten Webseite, die ich noch bis Ende des Jahres betreue, muss ich ein reCaptcha einbauen, damit der Hoster aufgrund von Spam die PHP-Mail-Funktion wieder freigibt. Das ist jetzt (angeblich) auch passiert, da die reCaptcha-Überprüfung selbst funktioniert.

    Edit: Nach Rücksprache des Hosters ist die Funktion definitiv wieder aktiviert: "Die Serveradministratoren haben die PHP-mail()-Funktion wieder aktiviert." Daran kann es also nicht liegen, dass das Formular-Absenden nicht funktioniert.

    Eigentlich bin ich schon zu lange aus dem Thema PHP draußen. Mit etwas Hilfe habe ich es nun hinbekommen. Bis jetzt. Ich komme leider nicht weiter. Vielleicht kann mir jemand von euch weiterhelfen?
    • Die Überprüfung der einzelnen Felder funktioniert augenscheinlich. Zumindest werden etwaige gewollte Fehlermeldungen angezeigt.
    • Wenn man ohne das reCaptcha zu nutzen absenden möchte, werden dennoch keine Fehlermeldungen vom reCaptcha angezeigt. Aber die Seite "ruckelt" dann nur kurz. An der Seite selbst ändert sich sonst nichts.
    • Wenn man das Formular mit genutztem reCaptcha absenden möchte, funktioniert dessen Prüfung, aber beim Absenden passiert auch hier nichts. Wieder nur besagter "Ruckler". Es wird weder die E-Mail aus dem Formular abgesendet, noch wird man auf die "versendet.html" weitergeleitet.


      Anbei das Kontaktformular. Aus Datenschutzgründen habe ich hoffentlich alle entsprechenden Informationen entfernt.
      Aufgrund der begrenzten Zeichenlänger hier erst einmal der PHP-Teil des Formulars:

      PHP-Code:
      <?php


      // Angaben anpassen
      $to_email='test@example.com'//Die Zieladresse
      $mail_success='./versendet.html'// Pfad zu einer Bestätigungsseite, wenn die Mail erfolgreich versendet wurde.

      $error=false;



      // Formular-Variablen Deklarierung und Initialisierung
      $plz_error="";
      $vorname_error="";
      $name_error="";
      $telefon_error="";
      $telefax_error="";
      $strasse_error="";
      $ort_error="";
      $email_error="";
      $betreff_error="";
      $nachricht_error="";




      // Hier werden alle Pflichtfelder festgelegt. Diese Felder dürfen nicht leer bleiben.
      $pflicht[]='name';
      $pflicht[]='telefon';
      $pflicht[]='nachricht';

      $absendezeit date('h-i-s, j-m-y');

      if(
      $_POST)
      {
              
      // prüfen, ob eines der Pflichtfelder leer ist
              
      foreach($pflicht AS $key => $result)
              {
                      if(!
      $_POST[$result])
                      {
                              ${
      $pflicht[$key].'_error'}='Bitte ausfüllen';
                              
      $error=true;
                      }
              }

              
      // Prüfung der PLZ
              
      $pattern_plz="/^[0-9]{5}$/";
              if(!
      preg_match($pattern_plz,$_POST['plz']) && $_POST['plz']!='')
              {
                      
      $plz_error='falsches Plz Format';
                      
      $error=true;
              }

              
      // Prüfung der Telefonnummer
              
      $pattern_tel="/^[0-9-()\/+.]*$/";
              if(!
      preg_match($pattern_tel,$_POST['telefon']) && $_POST['telefon']!='')
              {
                      
      $telefon_error='falsches Format';
                      
      $error=true;
              }

               
      // Prüfung der Faxnummer
              
      $pattern_fax="/^[0-9-()\/+.]*$/";
              if(!
      preg_match($pattern_fax,$_POST['telefax']) && $_POST['telefax']!='')
              {
                      
      $telefax_error='&nbsp;&nbsp;&nbsp;&nbsp;falsches Format';
                      
      $error=true;
              }

                       
      // Prüfung recaptchar


          // Prüfung recaptchar
                      
      $captcha=(isset($_POST["captcha"]) ? $_POST['captcha'] : '');
                      
      $secret="MeinGeheimerSchluessel";

                              
      //Recaptcha verification and JSON response decode
                                  
      $verify=json_decode(file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$secret."&response=".$captcha), true);
                                  
      $error=!$verify["success"];

        if (isset(
      $response) && $response->success) {
         



              
      // Wenn keine Fehler vorhanden, dann kann die Mail versendet werden
              
      if(!$error)
              {


                     
                     
                      
      $from_name="{$_POST['vorname']} {$_POST['name']}";
                      
      $from_email=($_POST['email']!='') ? $_POST['email'] : $to_email;


                      
      $headers  "X-Sender: $from_name<$from_email>\n";
                      
      $headers .= "X-Mailer: $from_name powered by BWAT\n";
                      
      $headers .= "Return-Path: <$from_email>\n";
                      
      $headers .= "Date: "date('r'). "\n";
                      
      $headers .= "From: $from_email \n";
                      
      $headers .= "Sender: $from_email\n";
                      
      $headers .= "Reply-To: $from_email\n";
                      
      $headers .= "Organization:  BWAT\n";
                      
      $headers .= "X-MSMail-Priority: Normal\n";
                      
      $headers .= "Content-Type: text/plain\n";

                      
      $comment $from_name.' aus '.$_POST['plz'].' '.$_POST['ort'].' hat folgende Anfrage gesendet:'."\n\n";
                       
      $comment .= "Absendezeit: ".$absendezeit"\n\n";
                       
      $comment .= "Anrede: ";
                       
      $comment .= $_POST['anrede']."\n";
                       
      $comment .= "Vorname: ";
                       
      $comment .= $_POST['vorname']."\n";
                       
      $comment .= "Name: ";
                       
      $comment .= $_POST['name']."\n";
                       
      $comment .= "Straße: ";
                       
      $comment .= $_POST['straße']."\n";
                       
      $comment .= "Plz: ";
                       
      $comment .= $_POST['plz']." ";
                       
      $comment .= "Ort: ";
                       
      $comment .= $_POST['ort']."\n";
                       
      $comment .= "Telefon: ";
                       
      $comment .= $_POST['telefon']."\n";
                       
      $comment .= "Telefax: ";
                       
      $comment .= $_POST['telefax']."\n";
                       
      $comment .= "E-Mail: ";
                       
      $comment .= $_POST['email']."\n";
                       
      $comment .= "Betreff: ";
                       
      $comment .= $_POST['betreff']."\n\n";
                       
      $comment .= "Nachricht:\n";
                       
      $comment .= $_POST['nachricht'];

                      
      // Inhalte für den Besucher

                       
      $comment2 "Herzlichen Dank für Ihr Interesse an BWAT.\n\nDie nachfolgende Nachricht wurde erfolgreich an uns zugestellt.\n\nIhre Nachricht:\n";
                      
      $comment2 .= $_POST['nachricht']."\n\n";
                       
      $comment2 .= "Wir werden uns schnellstmöglich mit Ihnen in Verbindung setzen.\n";
                       
      $comment2 .= "Ihr BWAT\n\n";
                       
      $comment2 .= "==========================================================\n\n";
                       
      $comment2 .= "BWAT\n\n";
                       
      $comment2 .= "Musterstr. 1\n";
                       
      $comment2 .= "00815 Musterhausen\n\n";
                       
      $comment2 .= "Telefon: 0151515\n";
                       
      $comment2 .= "Telefax: 545646\n";
                       
      $comment2 .= "E-Mail:  test@example.com\n";
                       
      $comment2 .= "Internet: www.example.com";

                      
      $check_send=mail($to_email,$_POST['betreff'],$comment,$headers);
                      if(
      $check_send==true && $from_email!='')
                              {
                                       if(
      $from_email!='' && $from_email!=$to_email) @mail($from_email,$_POST['betreff'],$comment2,$headers);
                                       
      header("LOCATION: $mail_success");
                              }
                             
                   
                     
              }
               } else {}
      }

      ?>
    Zuletzt geändert von BWAT; 25.02.2019, 09:56. Grund: Neue Information

  • #2
    Und hier der HTML-Teil des Formulars:
    HTML-Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html lang="de">
    <head>
    
    <title>Kontakt | BWAT </title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
    <meta name="content-language" content="de" />
    <meta name="robots" content="index, follow" />
    <meta http-equiv="imagetoolbar" content="no" />
    
    <link rev="made" href="mailto:webmaster@example.com" title="E-Mail an BWAT" />
    <link href="http://www.example.com/favicon.ico" type="image/x-icon" rel="shortcut icon" />
    
    <style type="text/css">@import url(../css/style_a.css);</style>
    <!--[if lt IE 6]>
    <style type="text/css">@import url(../css/ie5_style_a.css);</style>
    <![endif]-->
    
    <script src='https://www.google.com/recaptcha/api.js'></script>
    </head>
    <body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
    
    <div id="container">
            <div id="menue">
                          <img src="https://example.com/../grafiken/logo/logo.gif" width="150" height="158" border="0" alt="" usemap="#logo"></img><br />
                     <ul class="liste">
                         <li><a class="button" title="Service" href="./service.html">Service</a></li>
                             <li><a class="button" title="Leistungen" href="./leistungen.html">Leistungen</a></li>
                            <li><a class="button" title="Portrait" href="./portrait.html">Portrait</a></li>
                            <li><a class="button" title="Jobs" href="./jobs.html">Jobs</a></li>
                        <li><a class="kontaktlink" title="Kontakt" href="./kontakt.php">Kontakt</a></li>
                     </ul>
             </div>
            <div id="title"><img src="https://example.com/../grafiken/titel/titel.jpg" width="590" height="100" border="0" alt="Test" title="Willkommen" /></div>
             <div id="umenue"><img src="https://example.com/../grafiken/linien/liniehgr.gif" width="590" height="4" border="0" alt=""></img></div>
             <div id="content">
    
             <h1>Kontakt</h1>
             <h3>Für Ihre Anfragen stehen wir Ihnen jederzeit sowohl telefonisch,<br />
             als auch via
             <a class="mailkontakt2" href="mailto:test@example.com">E-Mail</a>
             zur Verfügung.</h3>
    
             BWAT<br />
             Musterstr. 1<br />
             00815 Musterhausen<br /><br />
    
              <b>Telefon:</b><span class="telefon">564646</span><br />
              <b>Telefax:</b><span class="telefax">18469</span><br />
              <b>E-Mail:</b><a class="mailkontakt" href="mailto:test@example.com">test@example.com</a><br />
              <b>Internet:</b><a class="url" href="http://www.example.com/">www.test.de</a><br /><br />
    
             <form id="kontaktformular" method="post" >
                      <label for="anrede">Anrede</label>
                      <select style="width:80px" class="select" id="anrede" name="anrede" size="1">
                             <option></option>
                                <option value="Herr">Herr</option>
                                <option value="Frau">Frau</option>
                                <option value="Firma">Firma</option>
                     </select><br />
                      <label for="vorname">Vorname</label><input style="width:165px" class="text" type="text" id="vorname" name="vorname" value="<?=(isset($_POST["vorname"]) ? $_POST['vorname'] : '') ?>" size="100px" /><span style="color:#DF0000; font-size:0.8em;"><?=$vorname_error ?></span><br />
                      <label for="name">Name</label><input style="width:165px" class="text" type="text" id="name" name="name" value="<?=(isset($_POST["name"]) ? $_POST['name'] : '') ?>" /><span style="color:#006600;">*&nbsp;</span><span style="color:#DF0000; font-size:0.8em;"><?=$name_error ?></span><br />
                      <label for="straße">Straße</label><input style="width:165px" class="text" type="text" id="straße" name="straße" value="<?=(isset($_POST["strasse"]) ? $_POST['strasse'] : '') ?>" /><span style="color:#DF0000; font-size:0.7em;"><?=$strasse_error ?></span><br />
                      <label for="plz">Plz / Ort</label><input style="width:40px" class="text" type="text" id="plz" name="plz" maxlength="5" value="<?=(isset($_POST["plz"]) ? $_POST['plz'] : '') ?>" /><input style="width:115px" class="text" type="text" id="ort" name="ort" value="<?=(isset($_POST["ort"]) ? $_POST['ort'] : '') ?>" /><span style="color:#DF0000; font-size:0.75em;"><?=$plz_error ?></span><br />
                      <label for="telefon">Telefon</label><input style="width:165px" class="text" type="text" id="telefon" name="telefon" value="<?=(isset($_POST["telefon"]) ? $_POST['telefon'] : '') ?>" /><span style="color:#006600;">*&nbsp;</span><span style="color:#DF0000; font-size:0.8em;"><?=$telefon_error ?></span><br />
                      <label for="telefax">Telefax</label><input style="width:165px" class="text" type="text" id="telefax" name="telefax" value="<?=(isset($_POST["telefax"]) ? $_POST['telefax'] : '') ?>" /><span style="color:#DF0000; font-size:0.8em;"><?=$telefax_error ?></span><br />
                      <label for="email">E-Mail</label> <input class="text" style="width:165px" type="text" id="email" name="email" value="<?=(isset($_POST["email"]) ? $_POST['email'] : '') ?>" /><span style="color:#DF0000; font-size:0.8em;"><?=$email_error ?></span><br />
                      <label for="betreff">Betreff</label> <input class="text" style="width:165px" type="text" id="betreff" name="betreff" value="<?=(isset($_POST["betreff"]) ? $_POST['betreff'] : '') ?>" /><span style="color:#DF0000; font-size:0.8em;"><?=$betreff_error ?></span><br />
                      <label for="nachricht">Ihre Nachricht</label><textarea style="width:250px" class="text" id="nachricht" name="nachricht" cols="" rows="5"><?=(isset($_POST["nachricht"]) ? $_POST['nachricht'] : '') ?><?=$nachricht_error ?></textarea><span style="color:#006600;">*&nbsp;</span><br /><br />
               
              <div class="g-recaptcha" data-sitekey="MeinOeffentlicherSchlüssel"></div>
    
              <input type="submit" id="submit" /><br />
            </form>
             <p class="stern">Die mit Sternchen<span style="color:#006600;">*</span> gekennzeichneten Felder müssen ausgefüllt werden.</p><br />
    
             </div>
             <div id="footer"><img src="https://example.com/../grafiken/linien/liniegr.gif" class="linie" width="440" height="4" border="0" alt=""></img><a class="impressum" href="./impressum.html">IMPRESSUM</a>
                                 <img src="https://example.com/../grafiken/impr/test.jpg" class="test" width="150" height="48" border="0" usemap="#test" alt="Test"></img>
                              <a class="sitemap" href="./sitemap.html">Sitemap</a>
                              <a class="stand" href="./stand.html">Stand: 22.01.2019</a>
             </div>
    </div>
    <map id="logo" name="logo">
    <area shape="poly" coords="1,149,25,159,71,159,71,153,95,153,95,148,135,148,135,132,152,132,152,112,83,112,87,97,81,99,84,79,81,80,83,65,77,68,72,38,64,48,61,62,58,72,56,82,53,95,52,109,51,126,57,137,59,141,36,140,45,125,45,118,44,115,47,100,45,98,49,78,44,80,46,64,41,67,44,46,41,44,41,24,36,26,32,1,23,1,20,18,14,28,14,34,10,47,6,65,3,87,1,108,2,129,13,140,0,141" href="http://www.example.com/" alt="" />
    </map>
    <map id="test" name="test">
    <area shape="poly" target="_blank" coords="0,48,150,48,150,0,102,0,102,21,16,21,16,37,0,37" href="http://www.test.de/" title="Test" alt="Test" />
    </map>
    
    </body>
    </html>

    Kommentar


    • #3
      1. Überprüfen Sie den E-Mail-Versand: Stellen Sie sicher, dass die E-Mail-Funktion mail() ordnungsgemäß funktioniert und dass keine Fehler beim Versenden der E-Mail auftreten. Sie können dies überprüfen, indem Sie den Rückgabewert der mail()-Funktion überprüfen, um festzustellen, ob die E-Mail erfolgreich gesendet wurde.
      2. Debugging: Fügen Sie Debugging-Anweisungen in Ihren Code ein, um zu überprüfen, ob das Skript in den Abschnitt gelangt, der die E-Mail sendet, und ob alle erforderlichen Variablen korrekt gesetzt sind. Verwenden Sie echo- oder var_dump()-Anweisungen, um den Wert von Variablen zu überprüfen und potenzielle Fehler zu identifizieren.
      3. Fehlerbehandlung verbessern: Stellen Sie sicher, dass Ihr Skript Fehler angemessen behandelt und dem Benutzer geeignete Fehlermeldungen anzeigt, wenn das Absenden des Formulars aus irgendeinem Grund fehlschlägt. Sie könnten beispielsweise eine Meldung anzeigen, wenn die reCaptcha-Überprüfung fehlschlägt oder wenn es Probleme beim Versenden der E-Mail gibt.
      4. Logdateien überprüfen: Überprüfen Sie die Logdateien auf Ihrem Server, um nach Fehlern oder Warnungen zu suchen, die während des Absendeversuchs auftreten könnten. Dies kann Ihnen helfen, potenzielle Probleme zu identifizieren und zu beheben.
      5. ReCaptcha-Integration überprüfen: Stellen Sie sicher, dass die Integration von reCaptcha korrekt ist und dass die reCaptcha-Prüfung ordnungsgemäß durchgeführt wird. Überprüfen Sie die Eingabeformulare und das JavaScript, um sicherzustellen, dass sie reCaptcha ordnungsgemäß verwenden.
      6. Alternativen prüfen: Wenn das Problem nicht behoben werden kann, können Sie alternative Methoden zum Absenden von E-Mails in Betracht ziehen, z. B. die Verwendung von SMTP-Authentifizierung über eine Bibliothek wie PHPMailer oder Swift Mailer.
      Zuletzt geändert von admin; 18.03.2024, 08:17.

      Kommentar

      Lädt...
      X