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
.
我将我的网站和域移到了一个新的托管商,从那时起 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
.