首页 文章

Invisible Recaptcha - 网站密钥未加载?

提问于
浏览
1

更新,因为我已将实现更改为某些(某种程度上)更成功 .

我正在尝试在我们的系统中实现Invisible Recaptcha . 我们正在使用动态生成的表单,因此我将以编程方式调用挑战 . 我有这个代码来获取api:

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

在绘制表单之前,我注入了验证码div:

form.fields.push( { html: '<div id="g-recaptcha-div" class="g-recaptcha" data-sitekey="<mykey>" data-callback="myCallback" data-size="invisible"></div>',
                            type: 'html'
                          } );

绘制表单后,我调用render函数:

recaptcha_id = grecaptcha.render("g-recaptcha-div", { 'data-callback': _settings.form.submit } );

当表单出现时,他“受reCAPTCHA保护”徽标框会显示在我的提交按钮上 .

在我的提交函数中,我做了一些表单验证,然后'执行'recaptcha:

grecaptcha.execute(recaptcha_id);

然后继续我的提交 . 到目前为止,正好一次我看到了recaptcha挑战('挑选带有店面的图像'),此时“g-recaptcha-response”值被插入到我的表单提交中,我在传递给参数的参数中看到它我的PHP功能 .

但是......大部分时间我都没有看到挑战,而且'g-recaptcha-response'参数中没有任何内容,所以我的PHP验证失败了 . 几个问题:

1)我对没有一直出现的挑战的假设是,谷歌逻辑只在“条件合适”时才需要它 . 如果是这种情况,当我没有显示时我该怎么做,此时'g-recaptcha-response'参数没有值 - 我是否只是忽略它,假设没有值好吗?

2)有没有办法“强迫”挑战出现,如果只是为了让我对整个工作感觉更好,并测试我对回应的处理?

3)我曾尝试在grecaptcha.execute(recaptcha_id)之后调用grecaptcha.getResponse(recaptcha_id),但这不会返回任何内容 . 在我的客户端处理recaptcha会更容易/更好 .

任何答案都赞赏 . 我可以重新提交这个作为一个新的“问题”,因为这个问题已经存在了一段时间 .

谢谢

1 回答

  • 0

    我已经广泛地重新编写了我的代码,因为我对此有了更多的了解,并且还处理了网站密钥问题,因此这个问题不再合适 . 标记回答,继续前进 .

相关问题