我正在使用联系表格制作一个Webapp,并在我的网站上安装了一个Google reCAPTCHA(v2),以防止机器人垃圾邮件。
我已将此代码添加到网站:
=SUBSTITUTE(A1&"_"&B1&"_"&C1&"_"&D1&"_"&E1,"_NA","")
当我尝试提交表单时,无需使用reCAPTCHA即可提交表单。
我做错什么了吗?
答案 0 :(得分:1)
除了Galzor所说的以外,您还需要按照此处https://developers.google.com/recaptcha/docs/verify
的说明实施服务器端验证。步骤如下:
将reCaptcha小部件添加到要保护的表单中,在注册小部件时使用公钥(注册reCaptcha时应从控制台https://www.google.com/recaptcha/admin/create拥有它)
当您使用javascript提交表单时,通过检查$(“#g-recaptcha-response”)输入字段中的长哈希字符串(令牌)来检查capcha是否已解决
在服务器上提交表单时,在处理任何内容之前,您需要使用Secret(也来自控制台的私钥)调用google Recaptcha Api并验证响应。
如果您未实现服务器端验证,则漫游器可以向#g-recaptcha-response输入添加看起来像是正常响应的内容,并通过客户端验证。这也意味着仅在服务器或客户端上检查输入是否为空还不够-您需要调用ReCaptcha API并检查令牌是否有效(Google为php提供了现成的库)
答案 1 :(得分:1)
得到了我在此视频中寻找的确切答复: https://youtu.be/rFccSL76SeY
感谢所有想要帮助的人!
答案 2 :(得分:-1)
您可以使用下面的小jquery代码来检查用户是否尝试提交表单而不单击Recaptcha。
$("form").submit(function(event) {
var recaptcha = $("#g-recaptcha-response").val();
if (recaptcha === "") {
event.preventDefault();
alert("Please check the recaptcha");
}
});
此外,您可以使用以下代码进行api调用,以检查响应是否有效。如果用户已验证自己,则响应将是一个很长的字符串。
if (grecaptcha.getResponse() == ""){
alert("You can't proceed!");
} else {
alert("Thank you");
}
在How to Validate Google reCaptcha on Form Submit处查看有关如何验证Recaptcha的更多信息。