bonjour a tous
j ai suivi ce tuto

https://grafikart.fr/tutoriels/recaptcha-anti-spam-346
mais lorsque je clici sur envoyer rien ne se passe au niveau du captcha et mon forrmulaire est bien envoye
qui pour m aider svp

merci
voici mon code

<?php
session_start();

//debut des envois par mail et sur la base de donnee
if (!empty($_POST["send"]))
{

function isValid($code, $ip = null)
{
    if (empty($code)) {
        return false; // Si aucun code n'est entré, on ne cherche pas plus loin
    }
    $params = [
        'secret'    => "6LfKWRMcAAAQrpm4W",
        'response'  => $code
    ];
    if( $ip ){
        $params['remoteip'] = $ip;
    }
    $url = "https://www.google.com/recaptcha/api/siteverify?" . http_build_query($params);
    if (function_exists('curl_version')) {
        $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); // Evite les problèmes, si le ser
        $response = curl_exec($curl);
    } else {
        // Si curl n'est pas dispo, un bon vieux file_get_contents
        $response = file_get_contents($url);
    }

    if (empty($response) || is_null($response)) {
        return false;
    }

    $json = json_decode($response);
    return $json->success;
}

    //Si les variable $_POST existent et ne sont  pas vide, on récupère la valeur, sinon je mets les variable  à NULL
    $name = !empty($_POST['name']) ? $_POST['name'] : NULL;
    $email = !empty($_POST['email']) ? $_POST['email'] : NULL;
    $subject = !empty($_POST['subject']) ? $_POST['subject'] : NULL;
    $messager = !empty($_POST['messager']) ? $_POST['messager'] : NULL;

    // les variables sont pretes a etres utilisees
    $name = $_POST["name"];
    $email = $_POST["email"];
    $subject = $_POST["subject"];
    $messager = $_POST["messager"];

    //on etablit une connexion a la base de donnee
       include ('base.php');

       //debut preparation pour insertion base de donnee 
    //préparation de la requête et des variables
    $sql = "INSERT INTO contact (name, email,subject, message) VALUES(?, ?, ?, ?)";
    $datas = array($name,$email,$subject,$messager );

    //Execution de la requete
    try
    {
        $requete = $bdd->prepare($sql);
        $requete->execute($datas);
    }
    catch(Exception $e)
    {
        // en cas d'erreur :
        echo " Erreur ! " . $e->getMessage();
        echo " Les datas : ";
        print_r($datas);
    }

    //on teste pour voir si tout est ok
    if ($requete)
    {
        $db_msg = "Vos informations de contact sont enregistrées avec succés.";
        $type_db_msg = "success";
        header("location:reponses-formulaire.php");
    }
    else
    {
        $db_msg = "Erreur lors de la tentative d'enregistrement de contact.";
        $type_db_msg = "error";
    }

//fin de la trnsmission des donnees dans la table

//debut envois du mail

    // on entre un ou Plusieurs destinataires
    $to = 'perroquet666@hotmail.com'; // notez la virgule
    // Sujet
    //$subject= "une reussite";
    // message
    $message = '
   <html>
   <head>
   <title>Voici les reponses au sondage</title>
   </head>
   <body>
   <p>Voici le formulaire de contact</p>
   <tr>
   <td>le prenom     </td><td>' . $name . '</td></br>
   </tr>
   <tr>
   <td>l adresse mail    </td><td>' . $email . '</td></br>
   </tr>
   <tr>
   <td>le prenom     </td><td>' . $subject . '</td></br>
   </tr>
   <tr>
   <td>le textera    </td><td>' . $messager . '</td></br>
   </tr>
   </body>
   </html>
   ';
    // Pour envoyer un mail HTML, l'en-tête Content-type doit être défini
    $headers[] = 'MIME-Version: 1.0';
    $headers[] = 'content-type: text/html; charset=utf-8';

    // En-têtes additionnels
    //$headers[] =  "From: " . $name . "<". $_POST["email"] .">\r\n";
    $headers[] = 'From: ' . $email . "\r\n" . 'Reply-To: ' . $name . "\r\n" . 'X-Mailer: PHP/' . phpversion();

    // Envoi
    //var_dump($headers);
    if (mail($to, $subject, $message, implode("\r\n", $headers)))
    {
        // success message
        //echo "Success!<br />";
    }
    else
    {
        // error message
        //echo "Fail<br />";
    }
}
?>

2 réponses


Bonjour.
Pour commencer, la vérification du formulaire n'en ai même pas une, car ceci n'a aucun sens:

//Si les variable $_POST existent et ne sont  pas vide, on récupère la valeur, sinon je mets les variable  à NULL
$name = !empty($_POST['name']) ? $_POST['name'] : NULL;
$email = !empty($_POST['email']) ? $_POST['email'] : NULL;
$subject = !empty($_POST['subject']) ? $_POST['subject'] : NULL;
$messager = !empty($_POST['messager']) ? $_POST['messager'] : NULL;

// les variables sont pretes a etres utilisees
$name = $_POST["name"];
$email = $_POST["email"];
$subject = $_POST["subject"];
$messager = $_POST["messager"];

Quel est l'intérêt de définir des variables avec des valeurs, si c'est pour tout de suite après les redéfinir avec des variables qui soit peuvent ne pas exister, soit peuvent être vide ?
Dans le contexte de ton code, tu pars du principe que tout est bon, vu son contenu.
Sinon pour ce qui concerne le sujet, tu a bien créé une fonction pour faire la vérification du captcha, mais tu ne l'utilises à aucun moment dans le code que tu présentes.

Bonjour
Merci pour l'aide
Ah oui ben bête que je suis ... les 4 dernières lignes je n'en ai pas besoin pfffff...

Voici donc le formulaire a remplir

<!doctype html>
<html lang="fr">
   <!-- debut head -->
   <head>
      <?php include("./include/head.php"); ?>
      <title>Formulaire de contat pour la pêche à la perle</title>
      <link rel="shortcut icon" href="https://phil.pecheperle.be/image/la-peche-a-la-perle.ico" type="image/x-icon"/>
      <meta name="description" content="Une question ,un renseignement sur la pêche a la perle du gardon?utilises le formulaire de contact  ">
      <link rel="stylesheet" type="text/css" href="/css/banniere-menu-peche-perle.css"/>
      <link rel="stylesheet" type="text/css" href="/css/contact-peche-perle.css"/>
      <script src='https://www.google.com/recaptcha/api.js'></script>
   </head>
   <!-- fin head -->
   <!-- debut body -->
   <body style="background-color:#87CEEB;">
      <div class="containerglobal">
         <!-- debut container entete-->
         <div class="container" style=" max-width: 100%;margin:auto;">
            <?php include("./include/baniere-peche-perle.php"); ?>
            <?php include("./include/menu3.php"); ?>
         </div>
         <div class="container1 border border-dark" style="padding: 15px;background: #ECE9E7;">
            <form action="envoyer.php" id="form" enctype="multipart/form-data" onsubmit="return validate()" method="post" style="background: #ECE9E7;">
               <h1>Formulaire de contact</h1>
               <div class="form-group">
                  <label for="name">Nom:<span>*</span></label>
                  <input type="text" id="name" name="name" class="form-control" placeholder="Nom" required />
               </div>
               <div class="form-group">
                  <label for="email">Email:<span>*</span></label>
                  <!--  <input type="e-mail" id="email" name="email" class="form-control"  placeholder="Email" required>-->
                  <input type="email" class="form-control" id="email" name="email" placeholder="Email" />
                  <label for="email">Email</label>
               </div>
               <div class="form-group">
                  <label for="subject">Sujet:</label>
                  <input type="text" id="subject" name="subject" class="form-control" placeholder="Demande de renseignement" />
               </div>
               <div class="form-group">
                  <label for="messager">Le message</label>
                  <textarea name="messager" class="form-control" id="messager" rows="3" placeholder="Message..." required></textarea>
                  <div class="g-recaptcha" data-sitekey="6LfKW"></div>
               </div>
               <input type="submit" name="send" value="Envoyer "/>
            </form>
         </div>
         <div class="container" style=" max-width: 100%;margin:auto;">
            <!-- debut pied de page-->
            <?php include("./include/pied-de-page.php"); ?>
            <?php include("./include/footer.php"); ?>
         </div>
      </div>
   </body>
   <!-- fin du body-->
</html>