最近,谷歌彻底彻底检查了他们的reCaptcha API并将其简化为一个复选框.

问题是,我可以提交包含reCaptcha的表单而不检查它,表单将忽略reCaptcha.
在您必须使用私钥等将表单发送到PHP文件之前,我在他们的开发人员指南中没有看到任何提及.我不知道如何验证表单以确保用户填写新的reCaptcha.
我错过了什么吗?是否仍需要具有私钥的PHP文件?
到目前为止我所有的reCaptcha都是:
<div data-type="image" class="g-recaptcha" data-sitekey="My Public Key"></div>
Run Code Online (Sandbox Code Playgroud) 
我怎样才能用另一种语言设置它,即:法国
我试过了:
var RecaptchaOptions = {
lang : 'fr',
};
Run Code Online (Sandbox Code Playgroud)
什么也没做.
我在API 文档的 API参考 - >版本2下找不到相关信息,用于reCAPTCHA
附加信息:
我在轨道上使用它,在gem "recaptcha" 这里找到
我正在按照文档中的说明实现一个不可见的reCAPTCHA:reCAPTCHA V2文档
我已经设法实现它没有任何问题.但是,我想知道的是我是否可以模拟成为机器人进行测试?
有没有办法迫使reCAPTCHA回应,好像它以为我是一个机器人?
在此先感谢您的任何帮助.
我有一个简单的联系表格的网站.验证有点微小,因为它不会进入数据库; 只是一封电子邮件 表格如下:
有5个字段 - 其中4个是必需的.提交被禁用,直到4个字段有效,然后您可以提交.然后在服务器上再次验证所有内容,包括recaptcha(我的客户端未验证).整个过程使用ajax完成,并且有多个测试必须在服务器端传递或返回4**头,并调用失败回调处理程序.
一切都像桌面上的Chrome浏览器一样(我没有尝试过其他浏览器,但我无法想象他们为什么会有所不同),但是在iPhone上,即使我没有选中复选框,reCaptcha仍会验证考试.
换句话说:我仍然需要正确填写四个值才能提交,但如果我没有选中reCaptcha的方框,请求仍然会成功.
我可以发布一些代码,如果有人认为这将有所帮助,但似乎问题在于设备而不是代码.有没有人对此有任何见解?
注意:如果这有用,服务器端是PHP/Apache.
更新:2015年5月28日:
我还在调试这个,但似乎Mobile Safari忽略了我的iPhone上的响应标题.当我将响应输出到页面时,我在桌面上获得的(data,status,xhr)是:
data:我的回答在这一点上只是说错误或成功 - >error
status: error
xhr: {'error',400,'error'}
在移动野生动物园:
data: error
status: success
xhr: {'error',200,'success'}
所以 - 它似乎只是忽略了我的响应头.我试着明确设置{"headers":{"cache-control":"no-cache"}}但无济于事.
更新:2015年6月3日
每个请求,这是代码.这几乎可以肯定超过你的需要.由于我试图修复它所做的改变,它也变得更加迟钝.另请注意,虽然可能看起来存在尚未定义的变量,但它们(应该)已在其他文件中定义.
The client side
$('#submit').on('click', function(e) {
$(this).parents('form').find('input').each(function() {
$(this).trigger('blur');
})
var $btn = $(this);
$btn = $btn.button('loading');
var dfr = $.Deferred();
if ($(this).attr('disabled') || $(this).hasClass('disabled')) {
e.preventDefault();
e.stopImmediatePropagation();
dfr.reject();
return false;
} else { …Run Code Online (Sandbox Code Playgroud) Recaptcha正在添加一个"此框架防止Safari中的后退/转发缓存问题"iFrame到我的网站顶部(下面包含的代码),这样可以将样式推迟20-30px(大约).
如果我设置display: none;为Firebug中的元素,它修复了问题.
有谁知道为什么这个元素有一个高度(我没有适用于iFrames的CSS)?或者如何设置display:none; 在上面?
<iframe src="about:blank" style="height: 0px; width: 0px; visibility: hidden; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; ">
This frame prevents back/forward cache problems in Safari.
</iframe>
Run Code Online (Sandbox Code Playgroud) 我搜索了很多但我无法弄清楚如何在表单提交之前验证新的reCaptcha,以及jQuery validation插件的验证功能.
我的意思是这样的:
$.validator.addMethod('reCaptchaMethod', function (value, element, param) {
if (grecaptcha.getResponse() == ''){
return false;
} else {
// I would like also to check server side if the recaptcha response is good
return true
}
}, 'You must complete the antispam verification');
$("#form").validate({
rules: {
name: {
required: true,
minlength: 2
},
email: {
required: true,
email: true
},
reCaptcha: {
reCaptchaMethod: true
}
},
messages: {
name: "Please fill your name",
email: "Please use …Run Code Online (Sandbox Code Playgroud) 我们正在开发一个需要使用验证码服务的网站.
有没有人成功使用Google Recaptcha为中国大陆的用户提供网站?
您可以分享任何经验.
难道验证码2版公开任何客户端的事件?我正在寻找具体的方法来确定一旦勾选方框后何时返回了Captcha响应,我就可以显示下面的"继续"按钮.
如果没有这个,用户可以单击复选框,然后在验证码响应返回之前快速单击提交按钮.
我可以将自己的click事件处理程序添加到类中recaptcha-checkbox-checkmark并轮询tick的可见性,我只是想知道是否有更简单的方法来执行此操作?
$(".recaptcha-checkbox-checkmark").click(function() {
//...Poll for visibility of tick
});
Run Code Online (Sandbox Code Playgroud) 我正在使用Google reCAPTCHA,并且能够将CAPTCHA组件添加到表单内的页面中.但是当我提交表格时,没有进行验证来检查CAPTCHA是否已经解决.
如何在提交表单时验证CAPTCHA组件是否已解决?或者,换句话说,如何使我的CAPTCHA组件成为必需品?
我使用reCaptcha v2但在Uncaught (in promise) null任何情况下都在开发控制台响应(并移动.reset()函数)
安慰:
我的recaptcha代码:
<div class="text-xs-center" style="text-align: center; height:150px;">
<p style="color: black;"> Complete the verification: </p>
<div style="display: inline-block;" class="g-recaptcha" data-sitekey="xxxxxxxxxxx" data-callback="callback"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
我的回调函数:
function callback() {
if (grecaptcha === undefined) {
alert('Recaptcha non definito');
return;
}
var response = grecaptcha.getResponse();
console.log(response);
if (!response) {
alert('Coud not get recaptcha response');
return;
}
$.ajax({
'url' : 'validate-recaptcha.php',
'type' : 'POST',
'data' : {
'response' : response
},
'success' : function(data) {
alert('Data: '+data);
}, …Run Code Online (Sandbox Code Playgroud)