验证码 v2。需要有关如何包含验证的详细说明
reCAPTCHA v2. Need detailed instructions on how to include the verification
我为此苦恼了一段时间,需要一些帮助。
我已经设法在我的在线表单中添加了一个 reCAPTCHA 复选框,但我不知道在验证时该怎么做。
我使用了 Checkbox instructions 中所述的“自动呈现 reCAPTCHA 小部件”选项。
但我卡在 verification instructions 上了。
我的表单代码很简单:
<form name="myForm" action="mail.php" onsubmit="return validateForm()" method="POST">
<div>
<label for="name">Name:</label><br /><input id="name" type="text" name="name" class="formthin" required />
</div>
<div>
<label for="email">Email:</label><br />
<input id="email" type="email" name="email" class="formthin" required />
</div>
<div>
<label for="message">Comments, Questions, Whatever:</label><br />
<textarea id="message" name="message" rows="4" cols="4" class="formbig" required></textarea>
</div>
<div>
<div class="g-recaptcha" data-sitekey="site-key"></div>
</div>
<div>
<input type="submit" value="Submit" class="formsubmit" />
</div>
</form>
我在“<head></head>
”标签之间添加了以下内容。
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
到目前为止,页面上的一切看起来都不错。
这里是“mail.php”文件中的代码:
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$formcontent=" From: \n $name \n\n Message: \n $message";
$recipient = "my email address";
$subject = "Website Contact Form";
$mailheader = "From: $email \r\n";
$forward = 1;
$location = "url of thank you page";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
if ($forward == 1) {
header ("Location:$location");
}
else {
echo "Thank you message.";
}
?>
这是我需要帮助的地方。
我不确定我应该使用三个验证选项中的哪一个,如何实现选择,或者 API 响应的代码应该放在哪里。
例如,如果我使用第一个选项,“g-recaptcha-reponse”POST 参数是否进入我的初始 <form>
标签? API 请求上的注释似乎表明我需要第二种 POST 方法。我不确定如何将它与我当前的结合或实施。
API 响应代码是否在我的“mail.php”文件中?或者在我的表单页面上的“<script></script>
”标签之间? (在头部还是表格下方?)
我的“密钥”在哪里发挥作用?我没有看到任何关于如何包含它的说明。
我浏览了论坛,发现之前的一个问题似乎相关:
“Google reCaptcha v2 (Checkbox) Verification”
原始发布的代码看起来与我的非常相似。 (在 html 页面和 php 动作脚本中)
回复是第二个 php 脚本,看起来包含密钥,但没有说明 php 代码应该放在哪里。我是否将它与表格一起放在文件中?是添加还是替换mail.php动作脚本?如果它替换脚本,如何处理实际表单的响应?
如有任何帮助,我们将不胜感激。
谢谢。
++++++++++++++++++++++++++++
我已按照@Bazaim 发送的 link 中的说明进行操作。
这些是我采取的步骤:
下载“recaptcha-master”文件夹并将其添加到我的网站目录。
运行 我的终端中的“composer”安装脚本。
将“composer.phar”文件移动到“recaptcha-master”文件夹中。
在“composer.json”文件中添加了以下内容:
“要求”:{
"google/recaptcha": "^1.2"
}
将“require_once...”脚本添加到我的“mail.php”文件的底部,如下所示:
setExpectedHostname('my-domain-name.com')
->验证($gRecaptchaResponse,$remoteIp);
如果 ($resp->isSuccess()) {
// 已验证!
} 别的 {
$errors = $resp->getErrorCodes();
}
?>
到目前为止一切顺利。当我转到我的表单并单击“我不是机器人”的“复选框”时,系统会提示我执行图像识别操作并在“我不是机器人”旁边显示绿色“选中”。
但是,当我提交表单时,我的“mail.php”不再起作用。它试图在浏览器 window 中加载,而不是向我发送电子邮件。
此外,reCAPTCHA 复选框不是“必需”点击提交。
我让它工作了。这是我最后做的:
从我的 mail.php 文件中删除了额外的 PHP 脚本。 (前面 posts 中提到的“require_once”内容)我的 PHP 脚本在我添加它之前就可以工作,所以我想把它恢复到工作版本。
我试图将 reCAPTCHA 设为一项要求,因此我进行了另一次搜索并找到了 instructions on adding javascript and css 并将其添加到我页面上的代码中。 (这是我在最初 post 中试图解决的问题之一)
JavaScript:
window.onload = function() {
var $recaptcha = document.querySelector('#g-recaptcha-response');
if($recaptcha) {
$recaptcha.setAttribute("required", "required");
}
};
CSS:
#g-recaptcha-response {
display: block !important;
position: absolute;
margin: -78px 0 0 0 !important;
width: 302px !important;
height: 76px !important;
z-index: -999999;
opacity: 0;
}
已添加到我的联系页面上的 <head></head>
代码。
宾果 - 一切正常。
我不确定验证信息是否真的被使用了。 (我在原来的 post 中试图弄清楚的另一件事)现在我不确定它是否真的有必要。表单中需要reCAPTCHA,表单正在提交中。
无论如何,感谢@Bazaim 的帮助,让我走上正轨。
希望这对其他可能遇到问题的人有所帮助。
我为此苦恼了一段时间,需要一些帮助。
我已经设法在我的在线表单中添加了一个 reCAPTCHA 复选框,但我不知道在验证时该怎么做。
我使用了 Checkbox instructions 中所述的“自动呈现 reCAPTCHA 小部件”选项。
但我卡在 verification instructions 上了。
我的表单代码很简单:
<form name="myForm" action="mail.php" onsubmit="return validateForm()" method="POST">
<div>
<label for="name">Name:</label><br /><input id="name" type="text" name="name" class="formthin" required />
</div>
<div>
<label for="email">Email:</label><br />
<input id="email" type="email" name="email" class="formthin" required />
</div>
<div>
<label for="message">Comments, Questions, Whatever:</label><br />
<textarea id="message" name="message" rows="4" cols="4" class="formbig" required></textarea>
</div>
<div>
<div class="g-recaptcha" data-sitekey="site-key"></div>
</div>
<div>
<input type="submit" value="Submit" class="formsubmit" />
</div>
</form>
我在“<head></head>
”标签之间添加了以下内容。
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
到目前为止,页面上的一切看起来都不错。
这里是“mail.php”文件中的代码:
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$formcontent=" From: \n $name \n\n Message: \n $message";
$recipient = "my email address";
$subject = "Website Contact Form";
$mailheader = "From: $email \r\n";
$forward = 1;
$location = "url of thank you page";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
if ($forward == 1) {
header ("Location:$location");
}
else {
echo "Thank you message.";
}
?>
这是我需要帮助的地方。 我不确定我应该使用三个验证选项中的哪一个,如何实现选择,或者 API 响应的代码应该放在哪里。
例如,如果我使用第一个选项,“g-recaptcha-reponse”POST 参数是否进入我的初始 <form>
标签? API 请求上的注释似乎表明我需要第二种 POST 方法。我不确定如何将它与我当前的结合或实施。
API 响应代码是否在我的“mail.php”文件中?或者在我的表单页面上的“<script></script>
”标签之间? (在头部还是表格下方?)
我的“密钥”在哪里发挥作用?我没有看到任何关于如何包含它的说明。
我浏览了论坛,发现之前的一个问题似乎相关: “Google reCaptcha v2 (Checkbox) Verification” 原始发布的代码看起来与我的非常相似。 (在 html 页面和 php 动作脚本中)
回复是第二个 php 脚本,看起来包含密钥,但没有说明 php 代码应该放在哪里。我是否将它与表格一起放在文件中?是添加还是替换mail.php动作脚本?如果它替换脚本,如何处理实际表单的响应?
如有任何帮助,我们将不胜感激。 谢谢。
++++++++++++++++++++++++++++
我已按照@Bazaim 发送的 link 中的说明进行操作。 这些是我采取的步骤:
下载“recaptcha-master”文件夹并将其添加到我的网站目录。
运行 我的终端中的“composer”安装脚本。
将“composer.phar”文件移动到“recaptcha-master”文件夹中。
在“composer.json”文件中添加了以下内容:
“要求”:{ "google/recaptcha": "^1.2" }
将“require_once...”脚本添加到我的“mail.php”文件的底部,如下所示:
setExpectedHostname('my-domain-name.com') ->验证($gRecaptchaResponse,$remoteIp); 如果 ($resp->isSuccess()) { // 已验证! } 别的 { $errors = $resp->getErrorCodes(); } ?>
到目前为止一切顺利。当我转到我的表单并单击“我不是机器人”的“复选框”时,系统会提示我执行图像识别操作并在“我不是机器人”旁边显示绿色“选中”。
但是,当我提交表单时,我的“mail.php”不再起作用。它试图在浏览器 window 中加载,而不是向我发送电子邮件。 此外,reCAPTCHA 复选框不是“必需”点击提交。
我让它工作了。这是我最后做的:
从我的 mail.php 文件中删除了额外的 PHP 脚本。 (前面 posts 中提到的“require_once”内容)我的 PHP 脚本在我添加它之前就可以工作,所以我想把它恢复到工作版本。
我试图将 reCAPTCHA 设为一项要求,因此我进行了另一次搜索并找到了 instructions on adding javascript and css 并将其添加到我页面上的代码中。 (这是我在最初 post 中试图解决的问题之一)
JavaScript:
window.onload = function() {
var $recaptcha = document.querySelector('#g-recaptcha-response');
if($recaptcha) {
$recaptcha.setAttribute("required", "required");
}
};
CSS:
#g-recaptcha-response {
display: block !important;
position: absolute;
margin: -78px 0 0 0 !important;
width: 302px !important;
height: 76px !important;
z-index: -999999;
opacity: 0;
}
已添加到我的联系页面上的 <head></head>
代码。
宾果 - 一切正常。
我不确定验证信息是否真的被使用了。 (我在原来的 post 中试图弄清楚的另一件事)现在我不确定它是否真的有必要。表单中需要reCAPTCHA,表单正在提交中。
无论如何,感谢@Bazaim 的帮助,让我走上正轨。 希望这对其他可能遇到问题的人有所帮助。