首页 > 解决方案 > 验证时 Recaptcha 错误代码“连接失败”

问题描述

在实施 recaptcha v2 时,我'connection-failed'在尝试验证 recaptcha 输入时收到错误代码。

我遵循了这个(https://www.freakyjolly.com/how-to-add-google-recaptcha-in-php-form/)教程,因为我发现其他人没有运气

    require('src/autoload.php');

    $siteKey = 'my key';
    $secret = 'my key';

    $recaptcha = new \ReCaptcha\ReCaptcha($secret);

    $gRecaptchaResponse = $_POST['g-recaptcha-response']; 
    $remoteIp = $_SERVER['REMOTE_ADDR']; 
    $recaptchaErrors = ''; 

    $resp = $recaptcha->verify($gRecaptchaResponse, $remoteIp);

    if ($resp->isSuccess()) {
        $error[] = "worked";
    } else {
        $recaptchaErrors = $resp->getErrorCodes(); 

        foreach($recaptchaErrors as $err)
        {
            $error[] = $err;
        }

    }

我没有太多运气在任何地方找到有关此错误的任何详细信息,并且官方recaptcha页面上也没有记录。出于测试目的,我已经编辑了上面的代码段,但它会发送一封电子邮件。

标签: phprecaptcha

解决方案


如果allow_url_fopenoff您的 中php.ini,则连接将失败,因为默认Recaptcha使用file_get_contents访问 API。我不会启用此标志,因为它可能会带来安全风险。

如果您安装了 phpcurl模块,我的建议是Recaptchacurl连接一起使用:

$recaptcha = new \ReCaptcha\ReCaptcha($secret, new \ReCaptcha\RequestMethod\CurlPost());

推荐阅读