2017-06-15 19 views
0

私はhttps://www.google.com/recaptcha/api/siteverifyの私$_POST['g-recaptcha-response']を検証しようとしているが、私は以下の結果を得続ける:目に見えないreCAPTCHAのsiteverify - エラーコード

"success": false, 
    "error-codes": [ 
    "missing-input-response", 
    "missing-input-secret" 
    ] 

マイコード:私はgoogle_recaptcha_secret私の変数をチェックし

if($has_errors == false) { 
    $result = file_get_contents('https://www.google.com/recaptcha/api/siteverify', false, stream_context_create(array(
     'http' => array(
      'header' => "Content-type: application/x-www-form-urlencoded\r\n", 
      'method' => 'POST', 
      'content' => http_build_query(array(
      'response' => $_POST['g-recaptcha-response'], 
      'secret' => variable_get('google_recaptcha_secret', '') 
     )), 
    ), 
    ))); 

    var_dump($result); 

    $result = json_decode($result); 

    if($result->success == false) { 
     form_set_error('name', t('Submission blocked by Google Invisible Captcha.')); 
    } 
    } 

、合ってます。私はそのようなデータをポストするために使用さfile_get_contents見たことがない

答えて

0

は、私はそれは不可能だとは言わないよ、私はcURLのにしようとして推薦する:私はオンラインの例でのfile_get_contentsコードを見つけ

if ($has_errors == false) { 
    $data = [ 
     'response' => $_POST['g-recaptcha-response'], 
     'secret' => variable_get('google_recaptcha_secret', ''), 
    ]; 

    $curl = curl_init(); 
    curl_setopt($curl, CURLOPT_URL, 'https://www.google.com/recaptcha/api/siteverify'); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5); 
    curl_setopt($curl, CURLOPT_TIMEOUT, 10); 
    curl_setopt($curl, CURLOPT_POST, true); 
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data); 
    $result = curl_exec($curl); 
    $error = !$result ? curl_error($curl) : null; 
    curl_close($curl); 

    var_dump($result); 

    $result = json_decode($result); 

    if ($error || $result->success == false) { 
     form_set_error('name', t('Submission blocked by Google Invisible Captcha.')); 
    } 
} 
+0

が、代わりにカールを使用して問題を解決しました - ありがとう! – Paul

関連する問題