codeigniter php中的MISSING-INPUT-RESPONSE重捕获错误

问题描述 投票:0回答:1

我已经在codeigniter中为我的表单创建了Recaptcha,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”]}]

任何人都可以告诉我我在代码中做错了什么,谢谢!

php codeigniter error-handling recaptcha
1个回答
0
投票
我认为方法应该是GET而不是POST。

请使用下面的代码来验证Google验证码。

<?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"; } }

© www.soinside.com 2019 - 2024. All rights reserved.