Google reCAPTCHA 第二次提交失败

Posted

技术标签:

【中文标题】Google reCAPTCHA 第二次提交失败【英文标题】:Google reCAPTCHA fail for second time submit 【发布时间】:2015-09-08 19:04:00 【问题描述】:

我在本教程中实现了 reCAPTCHA,

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

第一次提交效果很好。我遇到的问题是:

    我将验证码与其他表单数据一起发送,例如用户名,电子邮件等....所以如果验证码正确但其他不正确,用户将再次发送,但第二次返回““成功”:假”

    1234563

如何解决这些问题?非常感谢。

【问题讨论】:

【参考方案1】:

Google reCAPTCHA 提供了这两个功能:我总是在所有支持 AJAX 的表单中使用它。

grecaptcha.getResponse()

grecaptcha.reset();

对于您的这两个问题,只要您需要在 javascript 代码中使用第二个函数。

请记住,如果您的页面中只有一个 CAPTCHA,则此方法有效。如果您有两个以上的验证码,请按照 Google 文档中的说明使用它们的 ID

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

【讨论】:

谢谢。这解决了问题。【参考方案2】:

在研究过程中遇到相同问题并遇到此主题的人; 如果您在自动渲染验证码时遇到问题,请尝试显式渲染它。为此,请在 body 标记内添加以下代码。

<script src="https://www.google.com/recaptcha/api.js?onload=recaptchaCallback&render=explicit&hl=tr" async defer></script>

                            var recaptchaCallback = function () 
                               //  alert("grecaptcha is ready!");
                                grecaptcha.render("YOUR html DIV ID", 
                             'sitekey': 'YOUR SITE KEY', 
                                );
                            ;
    

    我正在使用 AJAX 检查注册表并获得响应。所以我在我的 AJAX 响应中添加了重置功能。

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

参考Google reCaptcha explicit render。

【讨论】:

以上是关于Google reCAPTCHA 第二次提交失败的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Google ReCaptcha 不阻止提交表单?

google recaptcha failed to load怎么办

新的 Google ReCaptcha 实施和提交前检查

Javascript/Google 地图,自动创建的组合框在第二次迭代中失败

GravityForms - 通过 GF API(后端)使用 Google Recaptcha 发布表单

Google reCaptcha 重置不起作用