11525 sujets

JavaScript, DOM et API Web HTML5

Bonjour.
Je souhaite ajouter un recaptcha v3 à un formulaire. Dans un premier temps, je fais un essai avec un formulaire ultra simplifié, appelé test.html. j'y ajoute le javascript recaptcha. Ce formulaire renvoie vers le fichier de traitement appelé test.php5.
Mon site est hébergé chez free, la fonction file_get_contents ne fonctionne pas, il faut passer par curl.
J'ai obtenu une clé site et une clé secrète auprès de google et j'ai déclaré mon nom de domaine.
Je reçois bien la réponse de google mais dans le script, $reponse est toujours égal à false.
Je ne comprends pas pourquoi.
Est-ce que par hasard google ne reconnaitrait pas les noms de domaine en free.fr ?
Autre idée ?
je vous remercie par avance
Cordialement

HTML:

<html> 
    <head>
    
     <script src='https://www.google.com/recaptcha/api.js?render=CLESITE'></script>


     </head>
      <body>
           <script> 
             grecaptcha.ready(function() {
            grecaptcha.execute('CLESITE', {action:'submit'})
                  .then(function(token) {
            document.getElementById('g-recaptcha-response').value = token;
        });
    }); 
            </script>
            <form action="test.php5" method="post"> 
                <input type="hidden" id="g-recaptcha-response" name="g-recaptcha-response">
                <input type="text" name="name" placeholder="Votre nom" required>       
                <input type="submit" name="submit" value="SUBMIT"> 
            </form> 
        </body> 
    </html>


PHP:

<?php 

if(isset($_POST['g-recaptcha-response']))
{
    $captcha=$_POST['g-recaptcha-response'];
}
else
    $captcha = false;


if(!$captcha)
{
    echo "pas de captcha";
}
else
{
    
    $url = "https://www.google.com/recaptcha/api/siteverify?secret=CLESECRETE&response=$captcha";

    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_HEADER, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_TIMEOUT, 1);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    $response = curl_exec($curl);
    var_dump($response);
    if($response->{'success'}==true)
    {
        echo "cle ok";
    }
    elseif ($response->{'success'}==true && $response->{'score'} <= 0.5) 
    {
        echo "acces refusé";
    }
    else {echo "captcha nok";}
    
}





?>