Google ReCaptcha 始终 Return 域转移后为假

Google ReCaptcha Always Return False after domain transfer

我将我的网站和域移到了一个新的托管商,从那时起 Google Recaptcha 就停止工作了。

我没有更改代码中的任何内容,域也保持不变。

这是我的 PHP 代码,用于检查它已经工作多年的验证

<?php
    $response = $_POST["g-recaptcha-response"];

    $url = 'https://www.google.com/recaptcha/api/siteverify';
    $data = array(
        'secret' => '************************',
        'response' => $_POST["g-recaptcha-response"]
    );
    $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 '{ "alert": "error", "message": "<strong>Captcha Check Fail</strong> Bitte versuche es nocheinmal." }';
    } else if ($captcha_success->success==true) {
        
    }
?>

这是网上的一个成品脚本,但是也不行。我已经尝试了几个已完成的脚本,但 none 个有效

<script src="https://google.com/recaptcha/api.js" async defer></script>
<form action="" method="POST" style="width: 80%; margin-left: 497px;">
    <div style="margin-left: 48px;"><b> Registration Form </b><br><br></div>
    <div>Name: <input type="text" name="name" value="" /><br><br></div>
    <div>Email: <input type="text" name="email" value="" /><br><br></div>
    <div class="g-recaptcha" data-sitekey="******************"></div><br><br>
    <input type="submit" name="submit" value="SUBMIT">
</form>

<?php
 if(isset($_POST['submit']) && $_POST['submit'] == 'SUBMIT'){
  if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response']))
  {
        $secret = '*********************';
        $verifyResponse = file_get_contents('https://google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$_POST['g-recaptcha-response']);
        $responseData = json_decode($verifyResponse);
        if($responseData->true)
        { ?>
<div style="color: limegreen;"><b>Your contact request have submitted successfully.</b></div>
        <?php }
        else
        {?>
            <div style="color: red;"><b>Robot verification failed, please try again.</b></div>
        <?php }
   }else{?>
       <div style="color: red;"><b>Please do the robot verification.</b></div>
   <?php }
 }
?>

当然,我已经多次删除了 Recaptcha 帐户并生成了新的令牌,但没有任何变化。这也可能是由于主持人?是否有任何 PHP 设置可以防止重新捕获?服务器在 PHP 7.4 上运行并且该域具有来自 lets encrypt.

的 SSL 证书

感谢您的帮助

为寻求类似建议的其他人添加答案。

问题是新主机没有在 PHP 配置中启用 allow_url_fopen

这可以通过搜索 phpinfo(); 调用的输出来检查。

通常可以通过编辑 php.ini 文件、更改 cPanel 或 Plesk 中的 php 设置或联系托管服务提供商的支持团队来启用 allow_url_fopen

file_get_contents 需要 allow_url_fopen.