在PHP现有表单中集成Google重新验证码

在PHP现有表单中集成Google重新验证码,php,recaptcha,Php,Recaptcha,好吧,我一直在拼命想办法自己解决这个问题,但是没有成功。我试图让recaptcha在同一页上验证验证码。我宁愿让它在进入下一页之前检查验证码是否正确。我在头部调用了google js文件: <script src='https://www.google.com/recaptcha/api.js'></script> 我真的很困惑这部分应该如何工作,比如它到底去了哪里?我已将checkout.php提交到billing-checkout.php。第二部分进入billing

好吧,我一直在拼命想办法自己解决这个问题,但是没有成功。我试图让recaptcha在同一页上验证验证码。我宁愿让它在进入下一页之前检查验证码是否正确。我在头部调用了google js文件:

<script src='https://www.google.com/recaptcha/api.js'></script>

我真的很困惑这部分应该如何工作,比如它到底去了哪里?我已将checkout.php提交到billing-checkout.php。第二部分进入billing-checkout.php吗?如果是这样的话,我该如何使其准确工作?我讨厌感觉自己像个傻瓜,但这整件事让我很沮丧。任何帮助都将不胜感激,谢谢

您必须对提供的URL发出一个cURL请求,然后得到一个yes或nay回复

<?php
$cp = curl_init("https://www.google.com/recaptcha/api/siteverify");
$fields = array(
    'secret' => YOUR_RECAPTCHA_PRIVATE_KEY,
    'response' => $_POST['g-recaptcha-response'],
    'remoteip' => $_SERVER['REMOTE_ADDR']
);
curl_setopt($cp, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($cp, CURLOPT_POST, 1);
curl_setopt($cp, CURLOPT_POSTFIELDS, $fields);
curl_setopt($cp, CURLOPT_TIMEOUT, 15);

$data = curl_exec($cp); // The response

curl_close($cp);

?>


好的,我会尝试一下,然后与您联系,谢谢:)我试过了,但是验证码还是转到了下一页,尽管我没有选中“我不是机器人”复选框。将在同一页上尝试此脚本,以防它起作用。在同一页和它发布提交到的页面上都尝试了脚本的这一部分。验证码没有任何作用。那么,您是否正在检查formhandler中的响应?该代码段将在处理程序代码中使用
$data['success']
返回
true
false
,您需要自己根据缺少的部分提出错误。我终于明白了这一点,而且它工作得完美无缺。感谢所有的帮助,这对我来说无疑是一次学习经历:)
When your users submit the form where you integrated reCAPTCHA, you'll get
as part of the payload a string with the name "g-recaptcha-response". In 
order to check whether Google has verified that user, send a POST request
with these parameters:

URL: https://www.google.com/recaptcha/api/siteverify
secret (required)   **********************************************
response (required) The value of 'g-recaptcha-response'.
remoteip    The end user's ip address.
<?php
$cp = curl_init("https://www.google.com/recaptcha/api/siteverify");
$fields = array(
    'secret' => YOUR_RECAPTCHA_PRIVATE_KEY,
    'response' => $_POST['g-recaptcha-response'],
    'remoteip' => $_SERVER['REMOTE_ADDR']
);
curl_setopt($cp, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($cp, CURLOPT_POST, 1);
curl_setopt($cp, CURLOPT_POSTFIELDS, $fields);
curl_setopt($cp, CURLOPT_TIMEOUT, 15);

$data = curl_exec($cp); // The response

curl_close($cp);

?>