2015-06-23 10 views
5

ich die reCAPTCHA in diesem Tutorial implementieren,Google reCAPTCHA nicht für zweites Mal vorlegen

https://codeforgeek.com/2014/12/google-recaptcha-tutorial/

die einreichen zum ersten Mal gut funktionieren. Die Probleme, die ich habe, sind:

  1. Ich sende das Captcha mit anderen Formulardaten, z. Benutzername, E-Mail usw. .... wenn Captcha korrekt ist, aber andere nicht, der Benutzer wird es erneut senden, aber das zweite Mal gibt es "{" Erfolg ": false}"

  2. wenn ich es für ~ Leerlauf 2 min, wird es Sitzung abläuft und wenn ich die Box wählen sie es Alarm Pop-up und warnt so etwas wie „kann nicht aktualisiert werden: ungültige Parameter“, und ich kann die Box wieder

Wie beheben jenes Problem nicht wählen ? Danke vielmals.

Antwort

8

Google reCAPTCHA gibt diese zwei Funktionen: Ich benutze immer diese in meinem ganzen ajax powered Forms.

grecaptcha.getResponse()

grecaptcha.reset();

Für beide Ihres Problems zweite Funktion verwenden, wann immer Sie in Ihrem Java-Script-Code benötigen.

Denken Sie daran, dies funktioniert, wenn Sie nur ein Captcha in Ihrer Seite haben. Wenn Sie mehr als zwei Captcha haben ihre IDs verwenden, wie in Google Text & Tabellen erklärt

https://developers.google.com/recaptcha/docs/display#js_api

+0

Vielen Dank. Dies behebt das Problem. –

0

Diejenigen, die das gleiche Problem haben und dieses Thema in der Forschung gerecht werden; Wenn beim Rendern des Captchas ein Problem auftritt, versuchen Sie es explizit zu rendern. Fügen Sie dazu folgenden Code in das body-Tag ein.

<script src="https://www.google.com/recaptcha/api.js?onload=recaptchaCallback&render=explicit&hl=tr" async defer></script> 
  1.      var recaptchaCallback = function() { 
              // alert("grecaptcha is ready!"); 
              grecaptcha.render("YOUR HTML DIV ID", { 
             'sitekey': 'YOUR SITE KEY', 
              }); 
             }; 
    
  2. Ich bin mit AJAX Anmeldeformular zu überprüfen und Antwort. Also habe ich meiner AJAX-Antwort Reset-Funktion hinzugefügt.

    $('#frmRegistration').submit(function() { $.ajax({ url: "_ajax/_ajaxRegistration.php", type: "POST", data: $('#frmRegistration').serialize(), success: function (reply) { $('#resultRegistration').html(reply); grecaptcha.reset(); } }); });

Referenz Google reCaptcha explicit render.