提交联系表格时无需检查reCAPTCHA

时间:2019-03-14 11:02:02

标签: php html recaptcha

我正在使用联系表格制作一个Webapp,并在我的网站上安装了一个Google reCAPTCHA(v2),以防止机器人垃圾邮件。

我已将此代码添加到网站:

=SUBSTITUTE(A1&"_"&B1&"_"&C1&"_"&D1&"_"&E1,"_NA","")

当我尝试提交表单时,无需使用reCAPTCHA即可提交表单。

我做错什么了吗?

3 个答案:

答案 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的更多信息。