2015-06-23 29 views
5

a implementare il reCAPTCHA in questo tutorial,Google reCAPTCHA falliscono per la seconda volta presentare

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

che funzionano bene per la prima volta presentare. I problemi che ho sono:

  1. invio il captcha con altri dati di modulo, ad es. nome utente, email ecc .... quindi se captcha è corretto ma altri no, l'utente lo invierà di nuovo, ma la seconda volta restituirà "{" successo ": falso}"

  2. se lo inattivo per ~ 2 min, sarà la sessione scade e se seleziono la scatola pop-up di avviso e di allarme qualcosa come "non può aggiornare: parametro non valido", e non posso selezionare la casella di nuovo

Come risolvere questi problemi ? Molte grazie.

risposta

8

Google reCAPTCHA offre questa duplice funzione: utilizzo sempre questo in tutti i moduli con alimentazione ajax.

grecaptcha.getResponse()

grecaptcha.reset();

Per entrambi i problemi, utilizzare la seconda funzione ogni volta che è necessario nel codice di script java.

Ricordare che funziona se si dispone di un solo captcha nella pagina. Se si dispone di più di due captcha usare loro ID come spiegato in Google Documenti

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

+0

Grazie. Ciò ha risolto il problema. –

0

Coloro che hanno lo stesso problema e soddisfare questo argomento nel corso della ricerca; Se si verifica un problema durante il rendering automatico del captcha, provare a renderlo esplicitamente. Per fare ciò, aggiungi il seguente codice all'interno del tag body.

<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. sto usando AJAX per controllare modulo di registrazione e ottenere la risposta. Quindi ho aggiunto la funzione di reset alla mia risposta AJAX.

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

riferimento Google reCaptcha explicit render.