Google 验证码 php 验证

Google reCaptcha with php validation

我正在尝试将 reCaptcha v2.0 与 php 一起使用,在服务器验证中我使用此代码:

if(isset($_POST['Direccion_Email']) AND ($_POST['enviar'])) {
    if(isset($_POST['g-recaptcha-response'])){
    $mensaje_error = "";
    include 'config-formulario.php';
    require_once __DIR__ . '/recaptcha-master/src/autoload.php';
    $recaptcha = new \ReCaptcha\ReCaptcha($secret);
    $resp = $recaptcha->verify($_POST['g-recaptcha-response'], $_SERVER['REMOTE_ADDR']);
if (!$resp->isSuccess()) {
        $mensaje_error .= "Control Anti SPAM no es válido <br />";
        $errors = $resp->getErrorCodes();
    } else {
        //DO SOMETHING;
    }

但是当我尝试发送一个包含姓名、电子邮件和评论的简单联系表时,是 return 这个警告:

警告:file_get_contents():SSL 操作失败,代码为 1。OpenSSL 错误消息:error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate 在 /home/diego/www/systec/scripts/recaptcha-master/src/ReCaptcha/RequestMethod/Post.php 中验证失败第 68 行

警告:file_get_contents():无法在第 68 行 /home/diego/www/systec/scripts/recaptcha-master/src/ReCaptcha/RequestMethod/Post.php 中启用加密

警告:file_get_contents(https://www.google.com/recaptcha/api/siteverify):打开流失败:第 68 行 /home/diego/www/systec/scripts/recaptcha-master/src/ReCaptcha/RequestMethod/Post.php 中的操作失败

我正在本地主机上测试这个。

任何建议。

谢谢。

@jww 的回答对我有效:

关于步骤 (1),请参阅 How do you sign Certificate Signing Request with your Certification Authority?. For (2), see How to create a self-signed certificate with openssl?。后者还向您展示了如何创建签名请求(相对于自签名证书)。它们是相同的步骤 - 唯一不同的是签名请求缺少 -x509 选项。

改变

$verify=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret={$secret}&response={$response}");

$ch = curl_init("https://www.google.com/recaptcha/api/siteverify?secret={$secret}&response={$response}");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$verify = curl_exec($ch);