用户总是由于某种原因而被拒绝。
在客户端,我们拥有
的v2确切名称 <script src="https://www.google.com/recaptcha/api.js"></script>
在结束标签和
上方 <div class="g-recaptcha" data-sitekey="CLIENT SIDE SECRET">
在表格上的适当位置。 (我们的适当秘密在CLIENT SIDE SECRET位置。)
在服务器端,我们有:
$response = $_POST["g-recaptcha-response"];
$url = 'https://www.google.com/recaptcha/api/siteverify';
$data = array(
'secret' => 'SERVER SIDE SECRET',
'response' => $_POST["g-recaptcha-response"],
// for Cloudflare
'remoteip' => (isset($_SERVER["HTTP_CF_CONNECTING_IP"]) ? $_SERVER["HTTP_CF_CONNECTING_IP"] : $_SERVER['REMOTE_ADDR'])
);
$options = array(
'http' => array (
'method' => 'POST',
'content' => http_build_query($data)
)
);
$context = stream_context_create($options);
$verify = file_get_contents($url, false, $context);
$captcha_success = json_decode($verify);
if ($captcha_success->success==false) {
echo "<h3>You are a bot! Go away!</h3>";
exit;
} else if ($captcha_success->success==true) {
//echo "<h3>You are not not a bot!</h3>";
}
(同样,正确的秘密在正确的位置。)我在服务器端尝试了一些不同的代码,但没有任何效果。
任何帮助将不胜感激。谢谢!
答案 0 :(得分:0)
好吧,终于明白了。这很简单:该表单位于表中,并且根据另一个post I finally found,因此,该表单在DOM中过早关闭,并且Recaptcha无法找到它最初创建的g-recaptcha-response 。将'C'
标记放在表格之外可以解决此问题。
我敢打赌,这是一个非常常见的错误,我很惊讶很难找到解决方案。我希望这可以帮助其他人遇到这个非常令人沮丧的问题。