rAthus icon

Invisible reCAPTCHA

rAthus | PRO | 02/01/18 02:08:28 PM UTC | 0 ⭐ | 939 👁️ | Never ⏰ | []
PHP |

1.62 KB

|

None

|

0 👍

/

0 👎

// URL pour générer des clés: https://www.google.com/recaptcha/admin
 
// Appeler l'API dans le <head> de la page :
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
 
// Insérer cet input caché dans le <form> :
<input type="hidden" name="recaptcha_token" />
 
// Insérer le bouton en dehors du <form> :
<button class="g-recaptcha" data-sitekey="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" data-callback="recaptchaCallback" data-badge="inline" style="margin-top:20px;">
    Envoyer
</button>
 
// Intégrer cette fonction JavaScript dans la page :
function recaptchaCallback(recaptcha_token) {
    $('[name="recaptcha_token"]').val(recaptcha_token);
    // ici, valider le <form> ou envoyer les données de ce dernier
}
 
// En cas d'erreur de votre côté, possibilité de recharger le reCAPTCHA avec :
grecaptcha.reset();
 
// Vérifier la validité du reCAPTCHA à la réception des données du formulaire :
$recaptcha_token = htmlspecialchars($_POST['recaptcha_token'],ENT_QUOTES);
$recaptcha_ok = -1;
if (!empty($recaptcha_token)) {
    $recaptcha_ok = 0;
    $url = 'https://www.google.com/recaptcha/api/siteverify';
    $myvars = 'secret=YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY&response='.$recaptcha_token;
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $myvars);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $response = curl_exec($ch);
    $json = json_decode($response);
    if ($json->success)
        $recaptcha_ok = 1;
}
 
// Si le reCAPTCHA est validé, alors $recaptcha_ok = 1;

Comments