首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不可见的recaptcha -挑战未出现

不可见的recaptcha -挑战未出现
EN

Stack Overflow用户
提问于 2018-10-25 22:39:43
回答 1查看 4.5K关注 0票数 2

在我们动态生成的表单上实现不可见的reCAPTCHA。我们的from引擎从数据库中获取字段列表,并动态地用表单字段填充DOM,显示它,并处理post。若要使用不可见的reCAPTCHA:

当页面加载完毕时,我正在加载google代码:

代码语言:javascript
复制
<script src="https://www.google.com/recaptcha/api.js?render=explicit" async defer></script>

一旦从DB加载了我的表单,我就将recaptcha div注入到我的字段列表中:

代码语言:javascript
复制
form.fields.push( { html: '<div id="g-recaptcha-div" class="g-recaptcha" data-sitekey="<my site key>" data-badge="inline" data-size="invisible"></div>',
                    type: 'html'
                  } );

稍后,我将表单附加到DOM (jQuery 'appendTo'),然后立即呈现reCAPTCHA:

代码语言:javascript
复制
recaptcha_id = grecaptcha.render("g-recaptcha-div", 
                   { 
                     'data-callback': _settings.form.submit,
                     'sitekey'      : <my site key>
                   }, true 
                 );

并显示表单,并显示reCAPTCHA徽章/受图标保护。查看DOM检查器,我可以使用“g- recaptcha -response”文本区域,但它是不可见的。如我所料。

然后,在我的submit函数中,在进行了一些表单验证之后,我执行了recaptcha:

代码语言:javascript
复制
grecaptcha.execute(recaptcha_id);

到那时,我会预料到挑战会出现。但事实并非如此。是的,曾经如此。我的表单提交给我的PHP后端,其中有一个参数用于g-recaptcha-响应,但它是空的。有一次,当挑战出现时,g-recaptcha-响应有一个值。

当调用execute函数时,是否总是应该出现挑战?如果没有,那么我们应该如何处理空响应值?

谢谢你,安迪

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-29 17:44:39

好的,对于那些在家里跟着的人:

1)是的,可以在对grecaptcha.render的调用中指定回调函数的名称。更深入地看,我在这个页面(api)上注意到,我需要指定函数的名称如下:

代码语言:javascript
复制
recaptcha_id = grecaptcha.render("g-recaptcha-div", 
                                  { 
                                    'sitekey'  : <my site key>,
                                    'callback' : <callback>
                                  }, true 
                                );

我试图使用“数据回调”,这就是如何在HTML中指定它。哈!为了回答我的另一个问题,一旦您正确地执行了这个任务,就会使用一个标记来调用回调,不管是否呈现了这个挑战。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52999060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档