2017-06-15 1 views
0

Je suis en train de vérifier mon $_POST['g-recaptcha-response'] sur https://www.google.com/recaptcha/api/siteverify mais je continue à obtenir le résultat suivant:Invisible ReCaptcha SiteVerify - codes d'erreur

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

Mon code:

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.')); 
    } 
    } 

J'ai vérifié ma variable google_recaptcha_secret, c'est correct.

Répondre

0

Je ne l'ai jamais vu file_get_contents utilisé pour publier des données comme ça, je ne dis pas que ce n'est pas possible, mais je vous conseille d'essayer avec cURL:

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

J'ai trouvé le code file_get_contents dans un exemple en ligne, mais en utilisant curl à la place fixé le problème - merci! – Paul