Javascript 使用Google reCAPTCHA验证表单提交
我已经看过这个问题了 并试图在我的代码中实现该问题的答案,以验证我的表单,以便在验证码未完成时表单不会提交 但是什么也没发生-它只是提交表单 这是我的代码:Javascript 使用Google reCAPTCHA验证表单提交,javascript,html,validation,captcha,recaptcha,Javascript,Html,Validation,Captcha,Recaptcha,我已经看过这个问题了 并试图在我的代码中实现该问题的答案,以验证我的表单,以便在验证码未完成时表单不会提交 但是什么也没发生-它只是提交表单 这是我的代码: <head> <script type="text/javascript"> var onloadCallback = function() { grecaptcha.render('html_element', { 'sitekey' : 'my_site_key'
<head>
<script type="text/javascript">
var onloadCallback = function() {
grecaptcha.render('html_element', {
'sitekey' : 'my_site_key'
});
};
</script>
</head>
<div id="html_element"></div>
<br>
<input type="submit" value="Submit" onclick="myFunction">
<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer>
function myFunction() {
if(grecaptcha.getResponse() == "")
alert("You can't proceed!");
else
alert("Thank you");}
</script>
var onloadCallback=函数(){
render('html\u元素'{
“站点密钥”:“我的站点密钥”
});
};
函数myFunction(){
如果(grecaptcha.getResponse()=“”)
警报(“您不能继续!”);
其他的
警惕(“谢谢”);}
有人能帮忙吗
编辑
<html>
<head>
<script type="text/javascript">
var onloadCallback = function() {
grecaptcha.render('html_element', {
'sitekey' : 'site-key'
});
};
onloadCallback();
$('form').on('submit', function(e) {
if(grecaptcha.getResponse() == "") {
e.preventDefault();
alert("You can't proceed!");
} else {
alert("Thank you");
}
});
</script>
</head>
<body>
<form action="?" method="POST">
<div id="html_element"></div>
<br>
<input type="submit" value="Submit">
</form>
<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer>
</script>
</body>
var onloadCallback=函数(){
render('html\u元素'{
“站点密钥”:“站点密钥”
});
};
onloadCallback();
$('form')。关于('submit',函数(e){
如果(grecaptcha.getResponse()=“”){
e、 预防默认值();
警报(“您不能继续!”);
}否则{
警惕(“谢谢”);
}
});
您需要在事件中触发if
语句。如果使用jQuery,则可以非常轻松地执行此操作:
$('form').on('submit', function(e) {
if(grecaptcha.getResponse() == "") {
e.preventDefault();
alert("You can't proceed!");
} else {
alert("Thank you");
}
});
请参见此处的工作示例:
在JavaScript中这样做的问题在于,如果用户愿意,很容易伪造结果。如果你真的想检查用户是否是机器人,你仍然应该使用你的reCAPTCHA密钥在服务器端比较用户(通过POST)提交的结果。这是一个服务器端解决方案,除了谷歌提供的嵌入代码外,不需要jQuery/javascript 当用户在您的站点上提交包含reCaptcha的表单时,请在服务器端查找“g-reCaptcha-response”POST参数 然后将您自己的http post请求发送到此url: 作为此请求的一部分发送的POST参数包括: 机密-必需。站点和reCAPTCHA之间的共享密钥 答复-需要。reCAPTCHA提供的用户响应令牌,用于验证站点上的用户 remoteip-可选。用户的IP地址 然后你应该从谷歌那里得到类似这样的东西,你可以检查它是否成功 { “成功”:真|假, “质询”:时间戳,//质询加载的时间戳(ISO格式yyyy-MM-dd'T'HH:MM:ssZZ) “hostname”:string,//解析reCAPTCHA的站点的主机名 “错误代码”:[…]//可选 } 如果success=true,则显示成功消息,或重定向到成功页面 如果success=false,则再次显示表单,并显示一条消息,说明他们很可能是机器人,请重试 有关更多信息,请参见此处: ,,
我根本不懂你的代码。什么事件应该触发IF语句?好吧,我忘了在函数中包装IF语句,请检查上面的编辑,这也不起作用。我已经在下面发布了一个有效的答案。这有点晚了。哈哈。但是你需要确保JS只在页面呈现后运行。这只是表单的附加部分,密钥仍将被使用。然而,这对我来说仍然不起作用,我已经将您的JSFIDLE代码添加到一个新文档中,无法理解它。你能看看我在上面的最新编辑吗?我在那里添加了我的新代码。谢谢。它与谷歌验证码2版本一起工作。已投票。发现此项有效[1][1]: