Souci de recaptcha [Résolu/Fermé]

Signaler
Messages postés
204
Date d'inscription
samedi 4 janvier 2014
Statut
Membre
Dernière intervention
4 juin 2017
-
Messages postés
204
Date d'inscription
samedi 4 janvier 2014
Statut
Membre
Dernière intervention
4 juin 2017
-
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

Messages postés
29170
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 août 2020
2 674
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



Messages postés
204
Date d'inscription
samedi 4 janvier 2014
Statut
Membre
Dernière intervention
4 juin 2017

Merci beaucoup pour ton aide, jordan, c'est résolu, ça fonctionne à la perfection ;)