在提交包含验证码字段的表单的其余部分之前,我正在使用以下代码(通过“纸箱的黑暗面”)验证 reCAPTCHA字段。
验证工作正常,调用 'recaptchavalidate' 页面,正确返回True或False并且 JavaScript 将其全部拾取(我通过alert(html);进行测试)。
但是,当True时,表单不会像您期望的那样继续被提交。事实上,更糟糕的是,reCAPTCHA 会像响应错误一样刷新。
我认为这是我的 JavaScript 有问题,而不是 reCAPTCHA ......但我哪里出错了?
<script type="text/javascript">
$(function(){
function validateCaptcha()
{
challengeField = $("input#recaptcha_challenge_field").val();
responseField = $("input#recaptcha_response_field").val();
// alert(challengeField);
// alert(responseField);
//return false;
var html = $.ajax({
type: "POST",
url: "recaptchavalidate",
data: "recaptcha_challenge_field="+challengeField+ "&recaptcha_response_field="+responseField,
async: false
}).responseText;
if(html == "True")
{
$("#captchaStatus").html(" ");
alert(html);//test
return true;
}
else
{
$("#captchaStatus").html("Your captcha is incorrect. Please try again");
alert(html);//test
Recaptcha.reload();
return false;
}
}
$("#signup").submit(function(){
return validateCaptcha();
});
});
</script>
编辑:这仅用于在提交之前检查没有错误。提交后(通过 Python,而不是 JS)正确检查 reCAPTCHA。因此,安全漏洞并没有一些用户指出的那么大。