cURL Recaptcha не работает PHP

Что я имею :

$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); 

Что я получил : bool(false) (что означает, что curl_exec() не удалось)

Что я ожидаю : ответ объекта JSON

Пожалуйста помоги. Благодарю.

Solutions Collecting From Web of "cURL Recaptcha не работает PHP"

Поскольку вы пытаетесь подключиться через SSL, вам необходимо настроить параметры cURL для его обработки. Быстрое исправление, чтобы заставить это работать, если вы добавите curl_setopt($verify, CURLOPT_SSL_VERIFYPEER, false);

Установка CURLOPT_SSL_VERIFYPEER в false приведет к тому, что он примет любой сертификат, предоставленный ему, а не проверит их.

 <?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); 

Вот альтернативный метод cURL, который я нашел, если он кому-то помогает. Очевидно, вводить переменные $ secret и $ response, чтобы передать их правильно. Извините, вопрос задает cURL-решение, но это самый быстрый метод, который я видел, поэтому я думал, что он добавит его в любом случае, потому что я знаю, что это поможет кому-то там. 🙂

 $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 } 

Легче использовать «file_get_contents» с помощью 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"; }