Ошибка recaptcha MISSING-INPUT-RESPONSE в codeigniter php - PullRequest
0 голосов
/ 30 мая 2020

Я создал recaptcha для моей формы в codeigniter, функция recaptcha в моем контроллере такая, как показано ниже:

public function validate_captcha() {
          $recaptcha = trim($this->input->post('g-recaptcha-response'));
          $userIp= $this->input->ip_address();
          $secret='6LcuEP4UAAAAAGa1zwXxGTV0r1fNHMZqnTGeN-c_';
          
          $secretdata = array(
              'secret' => "$secret",
              'response' => "$recaptcha",
              'remoteip' =>"$userIp"
          );

          $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($secretdata));
          curl_setopt($verify, CURLOPT_SSL_VERIFYPEER, false);
          curl_setopt($verify, CURLOPT_RETURNTRANSFER, true);
          $response = curl_exec($verify);
          $status= json_decode($response, true);
          
          if(empty($status['success'])){
              return FALSE;
          }else{
              return TRUE;
          }
      }

теперь проблема в том, что это дает мне следующую ошибку:

{"SUCCESS": FALSE, "ERROR-CODES": [ "MISSING-INPUT-RESPONSE"]}

может кто-нибудь, пожалуйста, скажите мне, что я сделал не так в моем коде, заранее спасибо

1 Ответ

0 голосов
/ 31 мая 2020

Я думаю, что метод должен быть GET вместо POST.

Пожалуйста, используйте приведенный ниже код для проверки Google captcha.

<?php 

public function validate_captcha() {
  $recaptcha = trim($this->input->post('g-recaptcha-response'));
  $userIp= $this->input->ip_address();
  $secret='6LcuEP4UAAAAAGa1zwXxGTV0r1fNHMZqnTGeN-c_';

  $verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$recaptcha.'&remoteip='.$userIp);
  $responseData = json_decode($verifyResponse);
    if(!$responseData->success){
        echo "failed";
    }else{
        echo "success";
    }

}
...