Ce que j'ai :
$data = array(
'secret' => "my-app-secret",
'response' => "the-response"
);
$verify = curl_init();
curl_setopt($verify, CURLOPT_URL, "https://www.google.com/recaptcha/api/siteverify");
curl_setopt($verify, CURLOPT_POST, true);
curl_setopt($verify, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($verify, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($verify);
var_dump($response);
Ce que j'ai obtenu : bool(false)
(ce qui signifie que curl_exec()
a échoué)
Ce que j'attends : une réponse à un objet JSON
S'il vous plaît aider. Merci.
Comme vous essayez de vous connecter via SSL, vous devez ajuster vos options cURL pour le gérer. Une solution rapide pour que cela fonctionne est si vous ajoutez curl_setopt($verify, CURLOPT_SSL_VERIFYPEER, false);
Si vous définissez CURLOPT_SSL_VERIFYPEER
sur false, il acceptera tous les certificats qui lui sont donnés plutôt que de les vérifier.
<?php
$data = array(
'secret' => "my-secret",
'response' => "my-response"
);
$verify = curl_init();
curl_setopt($verify, CURLOPT_URL, "https://www.google.com/recaptcha/api/siteverify");
curl_setopt($verify, CURLOPT_POST, true);
curl_setopt($verify, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($verify, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($verify, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($verify);
var_dump($response);
Voici une méthode alternative à CURL que j'ai trouvée si cela peut aider quelqu'un. Évidemment, entrez $ secret et $ response variables pour le transmettre correctement. Désolé, la question demande une solution CURL, mais c’est la méthode la plus rapide que j’ai vue. J’ai donc pensé que cela l’ajouterait de toute façon, car je sais que cela aidera quelqu'un. :)
$response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$secret."&response=".$response);
$response = json_decode($response, true);
if($response["success"] === true){
// actions if successful
}else{
// actions if failed
}
C'est plus facile d'utiliser "file_get_contents" avec POST:
$postdata = http_build_query(
array(
'secret' => [YOUR_SECRET_KEY],
'response' => $_POST["g-recaptcha-response"]
)
);
$opts = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $postdata
)
);
$context = stream_context_create($opts);
$result = file_get_contents('https://www.google.com/recaptcha/api/siteverify', false, $context);
$check = json_decode($result);
if($check->success) {
echo "validate";
} else {
echo "wrong recaptcha";
}
pour ceux qui préfèrent utiliser Shell_exec curl :
$arrayku = array();
$arrayku['secret'] = 'Your_SECRET_KEY';
$arrayku['response'] = trim($_POST['g-recaptcha-response']);
$dataku = http_build_query($arrayku);
$respon_google = Shell_exec('curl -s -L -X POST "https://www.google.com/recaptcha/api/siteverify" --data "'.$dataku.'" --max-time 10 --compressed');
$array_respon = json_decode($respon_google, true);
if($array_respon['success']===false){
echo 'Wrong recaptcha'; echo PHP_EOL;
//goto wrong_captcha;
exit;
}