如何集成谷歌reCAPTCHA版本3在客户端和服务器端(php).下面的代码使用显示recaptcha,但它不工作好.如何做这个集成.
<html>
<head>
<script src='https://www.google.com/recaptcha/api.js?render=XXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'></script>
</head>
<body>
<script>
grecaptcha.ready(function() {
grecaptcha.execute('XXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', {
action: 'action_name'
});
});
</script>
<form action="verify.php" method="post">
<input type="text" name="name" placeholder="Your name" required>
<input type="email" name="email" placeholder="Your email address" required>
<textarea name="message" placeholder="Type your message here...." required></textarea>
<input type="submit" name="submit" value="SUBMIT">
</form>
</body>
</html>
Verify.php
<?php
if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])) {
//your site secret key
$secret = 'XXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
//get verify response data
$verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$_POST['g-recaptcha-response']);
$responseData = json_decode($verifyResponse);
if($responseData->success):
print_r("Working Fine"); exit;
else:
print_r("No valid Key"); exit;
endif;
} else {
print_r("Not Working Captcha"); exit;
}
?>
6条答案
按热度按时间oymdgrw71#
通过Google reCAPTCHA v3纯JavaScript和PHP验证的联系人表单的简单示例
tldr;跳到底部的代码。
reCAPTCHA相关文档等:
(If谷歌正在听,我们爱你的工作,这将是美妙的,有一些更详细的例子链接到上述网页请。)
概述:
1.从Google获取密钥
1.在html头部加载recaptcha/api.js
1.使用JavaScript劫持表单提交,然后从Google获取令牌
1.将带有令牌的表单提交到服务器
1.从您的网站后端向Google提出请求以验证表单提交
1.解释响应并根据需要继续
**需要注意的是:**success响应参数仅表示验证码是否被成功评估,并不表示提交的内容是否可能是垃圾邮件。
“score”参数是您需要了解的结果。分数越高(0到1之间的数字),提交的内容越有可能是真实的,您可以选择接受的阈值(例如0.5)。
详细说明:
在HTML的头部添加以下行以加载recaptcha api.js代码:
(其中
$reCAPTCHA_site_key
是您的公共'站点密钥',我已将其保存在'config.php'文件中。您需要提交一个令牌(从Google接收,每个表单提交都是唯一的)到您的服务器。我认为最简单的方法是通过POST将其与表单的其余数据沿着发送。为此,我在表单中包含一个隐藏字段,如下所示:
(Nb.“contact”是contact.php,但我已经用.htaccess“重写”了URL)
现在我们需要劫持默认表单提交来生成令牌。我们可以在页面加载时生成令牌,但由于令牌的有效期只有两分钟(如果我正确阅读了https://developers.google.com/recaptcha/docs/verify页面),我认为最好在需要将其发送到站点服务器时获取它。
为此,我在关闭表单标签后添加了以下内容:
我把
validate(form)
函数放在结束body标签之前:注:
$reCAPTCHA_site_key
是您的公共站点密钥action: 'contactForm'
在Google reCAPTCHA Jmeter 板中识别此特定表单的提交,并在后端确认它是否符合预期是推荐的额外安全步骤在主PHP文件中,当收到表单提交时:
注:
把这些放在一起:
联系方式.php
配置文件php
lp0sw83n2#
试试这个。
eeq64g8w3#
菲律宾
在代码中的这一点上,您需要向ReCAPTCHA发送一个post请求来验证令牌,如下所示:https://www.google.com/recaptcha/api/siteverify。响应将是一个json对象,带有字段“success”(true/false)和“action”,用于比较(==)和得分(数字从0.0 - 1.0)
https://developers.google.com/recaptcha/docs/v3#api-response.
您还可以为每个请求指定操作名称(create_post、update_post、create_comment...)
nxagd54h4#
下面是一个示例工作代码与演示。
html副代码
PHP代码。
它工作正常。
演示:https://demo.codeforgeek.com/recaptcha-v3/
教程:https://codeforgeek.com/2019/02/google-recaptcha-v3-tutorial/
2ul0zpep5#
我想给予你一个完整的工作流程来集成recaptchav 3到ASP.NET核心MVC解决方案。
在appsettings.json文件中:
在你看来(@razor语法):
在你的表格里写上:
我创建了一个简单的方法来管理它:
我只是把它调用到一个控制器中:
请注意,我正在从“_Configuration”对象设置输入参数,该对象表示Startup.cs中配置设置对象的示例。您可以将手动输入参数传递给该方法。
好好享受吧
kkih6yb86#
下面是一个示例php脚本来验证recaptcha,它适用于v2和v3。
你需要发送一个带有secretkey,ip和验证码响应的post请求。
如果您需要有关如何将recapatchav3与示例html和php代码集成的完整教程,请阅读此教程https://geekvortex.com/integrate-invisible-recaptcha-v3-html-php