如何在客户端和服务器端 (php) 中集成 Google reCAPTCHA 第 3 版。以下代码用于显示 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>
验证.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;
}
?>
原文由 Karthik 发布,翻译遵循 CC BY-SA 4.0 许可协议
由 Google reCAPTCHA v3 使用纯 JavaScript 和 PHP 验证的联系表单的简单示例
tldr;跳到底部的代码。
相关的 reCAPTCHA 文档等:
(如果谷歌在听,我们喜欢你的工作,如果有一些更详细的例子链接到上面的页面,那就太好了。)
概述:
需要注意的重要事项: “成功”响应参数仅指示验证码是否成功评估,并不指示提交是否可能是垃圾邮件。
‘score’ 参数是您需要了解的结果。分数越高(0 到 1 之间的数字),提交的内容就越有可能是真实的,这取决于您接受的阈值(例如 0.5)。
详细地:
将以下行添加到 HTML 的头部以加载 recaptcha api.js 代码:
(其中
$reCAPTCHA_site_key
是您的公共“站点密钥”,我已将其保存在“config.php”文件中。)您需要向您的服务器提交一个令牌(从 Google 收到并且对于每个表单提交都是唯一的)。我认为通过 POST 将其与其他表单数据一起发送是最简单的。为此,我在表单中包含了一个隐藏字段,如下所示:
(注意,“联系人”是contact.php,但我已经用.htaccess“重写”了网址)
现在我们需要劫持默认的表单提交来生成令牌。我们可以在页面加载时生成令牌,但由于令牌仅在两分钟内有效(如果我正确阅读 https://developers.google.com/recaptcha/docs/verify 页面)我认为最好获取它在需要将其发送到您网站的服务器时。
为此,我在结束表单标记之后添加了以下内容:
我将
validate(form)
函数放在了结束正文标记之前:笔记:
$reCAPTCHA_site_key
是您的公共站点密钥action: 'contactForm'
在 Google reCAPTCHA 仪表板中识别此特定表单的提交,并在后端确认它与预期一致是推荐的额外安全步骤在主 PHP 文件中,当收到表单提交时:
笔记:
把它们放在一起:
联系人.php
配置文件