2017-04-24 1 views
0

Lors de la tentative d'implémentation d'une vérification recaptcha lors de la soumission d'un formulaire, je ne parviens pas à obtenir la propriété correcte de succès de la réponse. (Serveur en cours d'exécution PHP natif 5,3)PHP Curl Recaptcha ne peut pas obtenir la propriété de réponse réussie

$data = array(
     'secret' => $secret, 
     'response' => $_POST['g_recaptcha'], 
     'remoteip' => $_SERVER['REMOTE_ADDR'] 
    ); 

$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, 'https://www.google.com/recaptcha/api/siteverify'); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
$result = curl_exec($curl); 
curl_close($curl); 

if ($result->success===false) { 
    $errorMSG .= "Please complete reCAPTCHA"; 
    echo $result; 
    throw new exception('Gah! We seemed to have encountered an error. Please try again.'); 
} 

Même quand je coche la case de l'instruction if résout et exécute toujours l'écho et jette l'exception

{ "success": true, "challenge_ts": "2017-04-24T18:28:48Z", "hostname": "mysite.com" }<br /> <b>Fatal error</b>: Uncaught exception 'Exception' with message 'Gah! We seemed to have encountered an error. Please try again.' in ...process.php:23 Stack trace: #0 {main} thrown in <b>...process.php</b> on line <b>23</b><br /> 

J'ai aussi essayé d'utiliser les éléments suivants

$g_result = json_decode($result, true); 
if ($g_result->success == false) { 
    $errorMSG .= "Please complete reCAPTCHA"; 
    echo $result; 
    throw new exception('Gah! We seemed to have encountered an error. Please try again.'); 
} 

qui retourne

<br /> <b>Catchable fatal error</b>: Object of class stdClass could not be converted to string in <b>mysite.com/test/portfolio/php/process.php</b> on line <b>21</b><br /> 
+0

Essayez de me donner print_r (g_result de $) lorsque vous utilisez g_result = json_decode $ ($ result, true); –

+0

'Array ([succès] => 1 [challenge_ts] => 2017-04-24T19: 16: 41Z [nom d'hôte] => tedmoke.com) succès' Est maintenant la seule chose écho –

+0

Mon serveur semble être en cours d'exécution natif PHP 5.3, cela pourrait-il être une partie du problème? –

Répondre

1

Vous devez json_decode résultat.

$result = json_decode(curl_exec($curl)); 
+0

J'ai essayé mais seulement recevoir '
Catchable erreur fatale: objet de la classe stdClass ne pouvait être convertie en chaîne dans mysite.com/test/portfolio/php/process.php en ligne
' –

+1

Cela a résolu mon problème une fois que j'ai mis à jour la version PHP du serveur de 5.3 à 5.6 –