Recaptcha V2返回假PHP
我正在尝试以PHP形式实现GoogleReCAPTCHAV2 这是我的代码:Recaptcha V2返回假PHP,php,forms,recaptcha,verification,Php,Forms,Recaptcha,Verification,我正在尝试以PHP形式实现GoogleReCAPTCHAV2 这是我的代码: $arrContextOptions=array( "ssl"=>array( "verify_peer"=>false, "verify_peer_name"=>false, ), ); if($_SERVER["REQUEST_METHOD"] === "POST") { //form submitted
$arrContextOptions=array(
"ssl"=>array(
"verify_peer"=>false,
"verify_peer_name"=>false,
),
);
if($_SERVER["REQUEST_METHOD"] === "POST")
{
//form submitted
//check if other form details are correct
//verify captcha
$recaptcha_secret = "";
$response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$secret."&response=".$_POST['g-recaptcha-response'], false, stream_context_create($arrContextOptions));
$response = json_decode($response, true);
if($response["success"] === true)
{
echo "Logged In Successfully";
}
else
{
echo "You are a robot";
}
}
?>
当我提交表格时,它总是返回
你是一个机器人
我的公钥是正确的,我的私钥也是正确的
我不知道我做错了什么
我是本地主机
谢谢。两天前刚刚集成了来自谷歌的V2 recaptcha 请尝试下面的代码,明确查看是否正在解决您的问题: 我可以看到你做文件的内容,我想这是你的问题,你必须发表文章,请使用我下面的代码
if($_SERVER["REQUEST_METHOD"] === "POST"){
// prepare post variables
$post = [
'secret' => $secret,
'response' => $_POST['g-recaptcha-response'],
'remoteip' => 'is optional, but i pass it',
];
$ch = curl_init('https://www.google.com/recaptcha/api/siteverify');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$response = curl_exec($ch);
curl_close($ch);
var_dump($response);
$response = json_decode($response, true);
// check result
if(isset($response['success']) && $response['success'] == true){
echo "Logged In Successfully";
}else{
echo "You are a robot";
}
}
当您执行
var_转储($response[“success”])时,您看到了什么
上面写着“bool(false)”你是否正确地在url中传递了$secret
?在$response
上做var\u dump
,那里有错误信息。@KarloKokkak只有在通过流上下文指示file\u get\u内容返回响应体时,即使状态代码指示错误,也要返回响应体,请参见“嗨”,谢谢你的回答。当我尝试使用您的代码时,它会显示“string(75)”{“success”:false,“error code”:[“missing input response”]}“You is a robot”make var_dump($_POST['g-recaptcha-response']);你得到了什么?你的表单使用ajax吗?看来$\u POST['g-recaptcha-response']没有返回key@Tweakdev请确保$_POST['g-recaptcha-response']保存capcta响应,我猜现在正在从formvar_转储返回空字符串($_POST['g-recaptcha-response']);显示“NULL”@Tweakdev,因为您有此问题,响应不在formdata中,您的表单是带刷新的简单php表单还是使用ajax?