重新验证不能正常工作

时间:2017-11-23 06:59:43

标签: php recaptcha

请帮我使用这个rec​​aptcha v2。 我不知道问题是什么,但这是我的代码

if (isset($_POST['submit']))
{
    if(isset($_POST['g-recaptcha-response'])){
        //your site secret key
        $secret = 'secrete key';
        //get verify response data
        $verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$_POST['g-recaptcha-response']);
        $responseData = json_decode($verifyResponse);
        if($responseData->success){ 
            //code here
        }
        else{
            echo "<script>alert('Please click reCAPTCHA');</script>";
        }
    }

我在localhost中使用此代码我没有任何问题。我已经在google recaptcha中输入了我的域名,我认为唯一的问题是代码。

1 个答案:

答案 0 :(得分:1)

使用file_get_cotents()

更新请求
    $verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$_POST['g-recaptcha-response']);
    $responseData = json_decode($verifyResponse);

curl

$url = 'https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$_POST['g-recaptcha-response'];

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_TIMEOUT, 15);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, TRUE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, TRUE); 
$curlData = curl_exec($curl);

curl_close($curl);

$responseData = json_decode($curlData, TRUE);

尝试此代码:

if(isset($_POST['submit']) && !empty($_POST['submit'])) {
    if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])) {

        $secret = 'KEY';
        $url = 'https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$_POST['g-recaptcha-response'];
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($curl, CURLOPT_TIMEOUT, 15);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, TRUE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, TRUE); 
        $curlData = curl_exec($curl);

        curl_close($curl);

        $responseData = json_decode($curlData, TRUE);
        if($responseData['success'] == 'true') {

                 // Success code here

          }
          else
         {
       echo "<script>alert('Invalid reCAPTCHA');</script>";
         }
   }
}