在PHP现有表单中集成Google重新验证码
好吧,我一直在拼命想办法自己解决这个问题,但是没有成功。我试图让recaptcha在同一页上验证验证码。我宁愿让它在进入下一页之前检查验证码是否正确。我在头部调用了google js文件:在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
<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);
?>