Souci de recaptcha

Résolu/Fermé
Lucryio Messages postés 204 Date d'inscription samedi 4 janvier 2014 Statut Membre Dernière intervention 4 juin 2017 - Modifié par Lucryio le 5/03/2017 à 01:55
Lucryio Messages postés 204 Date d'inscription samedi 4 janvier 2014 Statut Membre Dernière intervention 4 juin 2017 - 5 mars 2017 à 13:16
Bonjour,

Je viens vers vous car, j'ai un souci au niveau de mon reCaptcha qui ne se valide pas, qu'il soit fait ou pas fait, il ne se valide pas.
Aucune erreur d'affiche autrement,

Voici mon code :

<?php
/* Si le formulaire est envoyé alors on fait les traitements */
if (!empty(stripslashes($_POST['envoye'])))
{

      $civilite  = stripslashes($_POST['civilite']);
      $nom       = stripslashes($_POST['nom']);
      $expediteur = stripslashes($_POST['email']);
      $sujet  = stripslashes($_POST['sujet']);
      $message  = stripslashes($_POST['message']);
 
    /* Expression régulière permettant de vérifier si le 
    * format d'une adresse e-mail est correct */
    $regex_mail = '/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i';
 
    /* Expression régulière permettant de vérifier qu'aucun 
    * en-tête n'est inséré dans nos champs */
    $regex_head = '/[\n\r]/';
 
    /* Si le formulaire n'est pas posté de notre site on renvoie 
    * vers la page d'accueil */

    /* On vérifie que tous les champs sont remplis */
    if (empty($nom) 
           || empty($expediteur) 
           || empty($sujet) 
           || empty($message))
    {
      $alert = 'Tous les champs doivent être renseignés';
    }
    /* On vérifie que le format de l'e-mail est correct */
    elseif (!preg_match($regex_mail, $expediteur))
    {
      $alert = 'L\'adresse '.$expediteur.' n\'est pas valide';
    }
    /* On vérifie qu'il n'y a aucun header dans les champs */
    elseif (preg_match($regex_head, $expediteur) 
            || preg_match($regex_head, $nom) 
            || preg_match($regex_head, $sujet))
    {
        $alert = 'En-têtes interdites dans les champs du formulaire';
    }
    /* Si aucun problème et aucun cookie créé, on construit le message et on envoie l'e-mail */
    elseif (!empty($_COOKIE['sent']))
    {
  // Creation du message a envoyer
  // -----------------------------
  $msg  =
  '--' . $boundary . "\r\n" .
  'Content-type: text/html; charset=utf-8' . "\r\n\r\n
  <html>
   <body>  
Bonjour, <br />
Ce mail à été envoyé depuis Pokemon-sunshine.pe.hu par $nom .<br />
Voici le message qu'il vous envoie : <br />
******************************************************   <br /><br />
    $message <br /><br />
******************************************************
   </body>
  </html>\r\n";
        /* Envoi de l'e-mail */
  // Ma clé privée
 $secret = "macleprive";
 // Paramètre renvoyé par le recaptcha
 $response = $_POST['g-recaptcha-response'];
 // On récupère l'IP de l'utilisateur
 $remoteip = $_SERVER['REMOTE_ADDR'];
 
 $api_url = '<a href="https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$response.'&remoteip='.$remoteip.'" rel="nofollow noopener noreferrer" target="_blank">https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$response.'&remoteip='.$remoteip.'</a>';
 
 $decode = json_decode($api_url, true);
 
 if ($decode == true) {
  // C'est un humain
 
        if (mail($to, utf8_decode($sujet), $msg, $headers))
        {
            $alert = 'E-mail envoyé avec succès';

            /* On détruit la variable $_POST */
            unset($_POST);
        }
        else
        {
            $alert = 'Erreur d\'envoi de l\'e-mail';
        }
 
    }
 else {
  echo 'La véification du captcha est mauvaise.';
 }
 }
    /* Cas où le cookie est créé et que la page est rafraichie, on détruit la variable $_POST */
    else
    {
        unset($_POST);
    }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="fr">
<head>
    <title>Contactez moi</title>
    <meta http-equiv="content-type" content="text/html;charset=utf-8(sans BOM)" />
</head>
<body>
 
<?php
if (!empty($alert))
{
    echo '<p style="color:red">'.$alert.'</p>';
}
?>
 
<form action="" method="post">
    <p>
        <label for="nom">Pseudo :</label>
        <input type="text" id="nom" name="nom" 
         value="<?php echo $membre['pseudo'];?>" readonly="readonly"
        />
    </p>
    <p>
        <label for="email">E-mail :</label>
        <input type="text" id="email" name="email" 
         value="<?php 
   $mailmembre = $bdd->query("SELECT * FROM membres WHERE ID='".$ID."'")->Fetch();
   echo $mailmembre['email'];?>" readonly="readonly"/>
    </p>
    <p>
        <label for="sujet">Titre du message :</label>
        <input type="text" id="sujet" name="sujet" 
         placeholder="Mettre le titre"
        />
    </p>
    <p>
        <label for="message">Message :</label>
        <textarea id="message" name="message" cols="40" rows="4"></textarea>
    </p>
 <p>
 <div class="g-recaptcha" data-sitekey="6LcZsRcUAAAAAJ0rGOK0SdHcbpyGbB6WE9CqIGHe"></div>
 </p>
    <p>
        <input type="submit" name="envoye" value="Envoyer" />
    </p>
</form>
 
</body>
</html>


Merci par avance pour votre aide.

1 réponse

jordane45 Messages postés 38299 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 novembre 2024 4 704
5 mars 2017 à 02:17
Bonsoir,

Commence par ajouter les deux lignes suivantes au tout début de ton fichier php (juste après ta première balise <?php )
 error_reporting(E_ALL);
 ini_set('display-errors','on');


Ensuite, tu peux essayer ceci :
https://fr.jeffprod.com/blog/2014/installez-le-nouveau-captcha-de-google-sur-votre-site-en-php.html
ou sinon là :
https://github.com/google/recaptcha



0
Lucryio Messages postés 204 Date d'inscription samedi 4 janvier 2014 Statut Membre Dernière intervention 4 juin 2017
5 mars 2017 à 13:16
Merci beaucoup pour ton aide, jordan, c'est résolu, ça fonctionne à la perfection ;)
0