2017-06-26 4 views
-2

je la fonction suivante que j'utilise pour Google recaptcha:reCAPTCHA échoue toujours pour valider

function isNotSpam(){ 
    if(isset($_POST['g-recaptcha-response'])){ 
     try { 
      $url = 'https://www.google.com/recaptcha/api/siteverify'; 
      $data = ['secret' => $google_captcha_secert, 
        'response' => $_POST['g-recaptcha-response'], 
        'remoteip' => $_SERVER['REMOTE_ADDR']]; 
      $options = [ 
       'http' => [ 
        'header' => "Content-type: application/x-www-form-urlencoded\r\n", 
        'method' => 'POST', 
        'content' => http_build_query($data) 
       ] 
      ]; 
      $context = stream_context_create($options); 
      $result = file_get_contents($url, false, $context); 
      return json_decode($result)->success; 
     }catch (Exception $e) {return null;} 
    }else{return null;} 
} 

Puis-je vérifier les erreurs de cette façon:

$google_captcha_secert = "/my secret key here/"; 
    if(!isNotSpam()){display error here} 

Mon HTML contient le code suivant pour reCAPTCHA

<script src="https://www.google.com/recaptcha/api.js?hl=en"></script> 
</head> 
<body> 
... 
<form> 
... 
<div class="g-recaptcha" data-sitekey="/ my public key here /"></div> 
... 
</form> 
</body> 

Qu'est-ce que je fais mal? J'ai essayé de vérifier les erreurs en utilisant la fonction sans la fonction et l'utiliser ainsi la place:

if(isNotSpam()){}else{display error here} 

J'ai essayé de le faire avec

if(isNotSpam() == null){display error here} 

Rien ne fonctionne, il me dit toujours que je Je suis un robot, mais c'est évidemment incorrect. Pouvez-vous me dire où est l'erreur?

Répondre

1

$google_captcha_secert n'est pas définie à l'intérieur de votre fonction, parce que vous ne l'importez de la portée mondiale à l'aide du global keyword, ni fourni comme un paramètre à votre fonction.

Il peut y avoir d'autres erreurs, considérez consigner les réponses/exceptions d'erreur, au lieu de les avaler silencieusement afin de pouvoir déboguer vous-même ce genre de problèmes. Je recommande également d'activer error_reporting lors du débogage. PHP devrait avoir imprimé un avis là-bas.

+0

vous êtes un homme intelligent. Je vous salue! Merci de votre aide! – shnisaka