联系表提交而不检查 reCAPTCHA
Contact Form submits without checking reCAPTCHA
我正在制作一个带有联系表的网络应用程序,并且在我的网站上有一个 google reCAPTCHA (v2) 以防止机器人垃圾邮件。
我已将此代码添加到网站:
<div class="g-recaptcha" data-sitekey=""></div>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
当我尝试提交表单时,我可以在不使用 reCAPTCHA 的情况下提交它。
我是不是做错了什么?
您可以使用下面的小 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 的更多信息。
除了 Galzor 所说的之外,您还需要按照此处所述实施服务器端验证 https://developers.google.com/recaptcha/docs/verify
步骤如下:
将 reCaptcha 小部件添加到您要保护的表单,在注册小部件时使用 public 键(您应该在注册 reCaptcha 时从控制台 https://www.google.com/recaptcha/admin/create 获得它)
当您提交表单时,在 javascript 中,通过检查 $("#g-recaptcha-response") 输入字段中的长哈希字符串(令牌)来检查验证码是否已解决
当您提交表单时,在服务器端,在处理任何事情之前,您需要使用 Secret 调用 google Recaptcha Api(也来自控制台的私钥)并验证响应。
如果您不实施服务器端验证,机器人可以添加一些看起来像对#g-recaptcha-response 输入的正常响应的内容,并通过客户端验证。这也意味着仅仅检查服务器或客户端输入是否为空是不够的——你需要调用 ReCaptcha API 并检查它的响应是否令牌有效(Google 为 php)
在这个视频中得到了我想要的确切回应:
https://youtu.be/rFccSL76SeY
感谢所有愿意提供帮助的人!
我正在制作一个带有联系表的网络应用程序,并且在我的网站上有一个 google reCAPTCHA (v2) 以防止机器人垃圾邮件。
我已将此代码添加到网站:
<div class="g-recaptcha" data-sitekey=""></div>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
当我尝试提交表单时,我可以在不使用 reCAPTCHA 的情况下提交它。
我是不是做错了什么?
您可以使用下面的小 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 的更多信息。
除了 Galzor 所说的之外,您还需要按照此处所述实施服务器端验证 https://developers.google.com/recaptcha/docs/verify
步骤如下:
将 reCaptcha 小部件添加到您要保护的表单,在注册小部件时使用 public 键(您应该在注册 reCaptcha 时从控制台 https://www.google.com/recaptcha/admin/create 获得它)
当您提交表单时,在 javascript 中,通过检查 $("#g-recaptcha-response") 输入字段中的长哈希字符串(令牌)来检查验证码是否已解决
当您提交表单时,在服务器端,在处理任何事情之前,您需要使用 Secret 调用 google Recaptcha Api(也来自控制台的私钥)并验证响应。
如果您不实施服务器端验证,机器人可以添加一些看起来像对#g-recaptcha-response 输入的正常响应的内容,并通过客户端验证。这也意味着仅仅检查服务器或客户端输入是否为空是不够的——你需要调用 ReCaptcha API 并检查它的响应是否令牌有效(Google 为 php)
在这个视频中得到了我想要的确切回应: https://youtu.be/rFccSL76SeY
感谢所有愿意提供帮助的人!