Comment insérer un captcha dans mon formulaire

Résolu
flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   -  
flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   -
bonjour a tous
je pensais avoir fini mon site
Mais je suis ennuyé par de petits malins robots qui m envoie des spams dans mon formulaire de contact
je dois donc intervenir et y placer un captcha

je viens de trouver un tuto a cette page qui me plais bien
https://palmi.smileandjoke.fr/php-captcha-simple-tableau-questions-reponses-29

Mais malheureusement
j ai une erreur que je ne parviens pas a décrypté

Notice: Undefined index: msg in /home/u434600775/domains/pecheperle.be/public_html/phil/testcontact.php on line 100

au niveau de cette ligne
<div><?= $_SESSION['msg'] ?></div>


voici le code complet donc d abord celui du formulaire

<?php
   // Démarrage de session pour pouvoir récupérer la réponse
   session_start();
   
   //on affiche les erreurs 
   error_reporting(E_ALL);
   ini_set('display_errors', TRUE);
   ini_set('display_startup_errors', TRUE);
   
   // Tableau avec les différentes questions/réponses pour notre captcha
   $quiz = [
       0 => [
           'question' => 'Quel est le premier jour de la semaine?',
           'answer' => 'lundi'
       ],
       1 => [
           'question' => 'Quel est le deuxième jour de la semaine?',
           'answer' => 'mardi'
       ],
       2 => [
           'question' => 'Quel est le troisième jour de la semaine?',
           'answer' => 'mercredi'
       ],
   ];
   
   // On utilise array_rand pour avoir un id aléatoire de notre tableau
   $id = array_rand($quiz);
   
   // On utilise l'id donné par array_rand pour pouvoir stocker la bonne réponse dans $_SESSION['reponse']
   $_SESSION['answer'] = $quiz[$id]['answer'];
   
   // On stock la question dans une variable toujours via l'id donné par array_rand
   $question = $quiz[$id]['question'];
   ?>
<!doctype html>
<html lang="fr">
   <!-- debut head -->
   <head>
      <?php include("./include/head.php"); ?>
      <!-- deux scripts tarteaucitron le deuxiem est celui qui devrait etres mis en dur dans chque page-->
      <script  src="/tarteaucitron/tarteaucitron.js"></script>
      <script src="/js/tartecitron-peche-perle2.js"></script>
      <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"/>
   </head>
   <!-- fin head -->
   
   <!-- debut body -->
   <body style="background-color:#cec1c1;" onLoad="document.getElementById('attente').style.display='none'">
      <div class="container" style="background-color:#87CEEB;">
	  
         <!-- 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>
		 
         <!-- id attende chargement page -->
         <div id='attente'>
            <p style="text-align: center;font-size: 24px;">Veuillez patienter svp la page est en cours de chargement ...</p>
         </div>
		 
         <!-- debut body -->
         <body>
		 
            <!-- debut container page -->
            <div class="container1 border border-dark" style="padding: 15px;background: #ECE9E7;">
			
               <!-- debut formulaire-->
               <form id="form" enctype="multipart/form-data" action="traitement-formulaire-test.php" 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="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>
				  
                                <!-- debut traitemnt captcha -->
                  <h3>Captcha</h3>
				  
                  <!-- la question récupérée  -->
                  <div><?= $question ?></div>
				  
                  <!-- retour éventuel renvoyé par la page de traitement -->
                  <div><?= $_SESSION['msg'] ?></div>
                  <div>
                     <label for="">captcha</label>
                     <input type="text" name="captcha">
                  </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>


et ensuite du traitement
<?php
session_start();

// phase du captcha
// Si la reponse de l'input captcha n'est pas vide
if(!empty($_POST['captcha'])){
	
    // On stock la reponse dans une variable en faisant une éventuelle conversion des majuscules en minuscule
    $userAnswer = strtolower($_POST['captcha']);
	
    // Si on envoi le formulaire
    if(isset($_POST['submit'])){
		
        // On compare la réponse stocké dans la session avec la réponse de l'utilisateur
        if($_SESSION['answer'] == $userAnswer){
			
            // Ici on stock dans session le message ok, mais on peut par exemple lancer le traitement d'un message en bdd ou d'un email.
            $_SESSION['msg'] = 'ok';
			
        // Si la réponse n'est pas bonne
        }else{
			
            // On envoi ici un message si la réponse n'est pas identique
            $_SESSION['msg'] = 'Captcha non valide...';
        }
		
            // Qu'on soit dans le if ou le else, on renvoit l'utilisateur sur le formulaire
            header('Location: index.php');
        }
		
    // else pour pour le premier if, si $_POST['captcha'] est vide (à l'arrivée sur la page par exemple), on ne passe aucun message a l'utilisateur et on redirige sur index
    }else{
        $_SESSION['msg'] = '';
        header('Location: index.php');
}

//on continue le reste du traitement enregistrement base de donnee +envois par mail
if (!empty($_POST["send"]))
{
    //Si les variable $_POST existent et ne sont  pas vide, on récupère la valeur, sinon je mets la variable $nom à 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"];
	
	// connexion base de donnee
    include ('base.php');
	
    //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 transmission des donnees dans la table
//l'envoie du mail
if (!empty($_POST["send"]))
{
    $messager = $_POST["messager"];
    $name = $_POST["name"];
    $subject = $_POST["subject"];
    $email = $_POST["email"];
    // 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 />";
    }
}

13 réponses

  1. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
     
    bonsoir jordane
    Merci pour la réponse
    juste en effet
    voila plus de message d erreur
    c est déjà le bon début

    Mais le captcha ne fonctionne pas
    lorsque je valide le formulaire avec une mauvaise réponse , il n'en tiens pas compte et envois le formulaire quand même
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Ben oui ... dans le tuto .. le bouton se nomme "submit"
       <input type="submit" name="submit">
      

      et dans ton code ;.. il se nomme "send"
        <input type="submit" name="send" value="Envoyer "/>
      


      Alors tu peux conserver ton bouton avec le nom "send" .. mais dans ce cas.. il faut modifier le code php du tuto pour vérifier si $_POST['send'] est envoyé et non pas le submit .. (ligne 6 de ton fichier de traitement )
      1
  2. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
     
    Oui encore une fois bien vu jordane
    Mais je ne vois pas de submit a la ligne 6

    j'ai essayé de modifié le submit la ligne 12 du traitement mais le formulaire est parti quand même
    pourtant il n y a que sur cette ligne la qu'il existe
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Oui c'est bien la ligne 12...

      Il y a aussi la ligne 28 qui n'est pas à la bonne place il faudrait la mettre dans le else de la ligne 24..

      Pour la suite si ça ne fonctionne toujours pas, il faudrait faire un Var_dump des différentes variables pour voir ce qu'elle contienne je parle des variable de session et de la variable post
      0
  3. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
     
    Merci jordane voila j'ai effectue les corrections
    Mais a présent un autre petit soucis

    lorsque je lance le formulaire
    j ai déjà le message Captcha non valide...

    c'est bizarre ...
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Je ne peux pas deviner de quelle façon tu as modifié exactement le code.... Nous montrer ta nouvelle version nous serait fort utile...
      À noter que si le code de traitement se situe dans la même page que le code du formulaire le premier else ( celui qui contient le message d'erreur ) est superflu
      0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
     
    merci pour ton aide jordane
    après avoir changé de navigateur le message ne s affiche plus
    pourtant je vide le cache sur firefox a chaque fois

    Mais le formulaire continue même avec un mauvais captcha

    je vais donc faire les Var_dump
    et je viendrais poster mon code
    0
  6. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
     
    voila je pense avoir bien positionner les var_dump

    le formulaire

    <?php
       // Démarrage de session pour pouvoir récupérer la réponse
       session_start();
       
       //on affiche les erreurs 
       error_reporting(E_ALL);
       ini_set('display_errors', TRUE);
       ini_set('display_startup_errors', TRUE);
       
    
    //ou avec !EMPTY() 
    //Si la variable $_POST['truc'] existe et n'est pas vide, alors $truc = $_POST['truc']  sinon elle vaut NULL 
    $_SESSION['msg']= !empty($_SESSION['msg']) ? $_SESSION['msg'] : NULL;
       
        // Tableau avec les différentes questions/réponses pour notre captcha
       $quiz = [
           0 => [
               'question' => 'Quel est le premier jour de la semaine?',
               'answer' => 'lundi'
           ],
           1 => [
               'question' => 'Quel est le deuxième jour de la semaine?',
               'answer' => 'mardi'
           ],
           2 => [
               'question' => 'Quel est le troisième jour de la semaine?',
               'answer' => 'mercredi'
           ],
       ];
       
       // On utilise array_rand pour avoir un id aléatoire de notre tableau
       $id = array_rand($quiz);
       
       // On utilise l'id donné par array_rand pour pouvoir stocker la bonne réponse dans $_SESSION['reponse']
       $_SESSION['answer'] = $quiz[$id]['answer'];
       
       Var_dump ($_SESSION['answer']);
       Var_dump ($_SESSION['msg']);
       
       // On stock la question dans une variable toujours via l'id donné par array_rand
       $question = $quiz[$id]['question'];
       ?>
    <!doctype html>
    <html lang="fr">
       <!-- debut head -->
       <head>
          <?php include("./include/head.php"); ?>
          <!-- deux scripts tarteaucitron le deuxiem est celui qui devrait etres mis en dur dans chque page-->
          <script  src="/tarteaucitron/tarteaucitron.js"></script>
          <script src="/js/tartecitron-peche-perle2.js"></script>
          <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"/>
       </head>
       <!-- fin head -->
       
       <!-- debut body -->
       <body style="background-color:#cec1c1;" onLoad="document.getElementById('attente').style.display='none'">
          <div class="container" style="background-color:#87CEEB;">
    	  
             <!-- 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>
    		 
             <!-- id attende chargement page -->
             <div id='attente'>
                <p style="text-align: center;font-size: 24px;">Veuillez patienter svp la page est en cours de chargement ...</p>
             </div>
    		 
             <!-- debut body -->
             <body>
    		 
                <!-- debut container page -->
                <div class="container1 border border-dark" style="padding: 15px;background: #ECE9E7;">
    			
                   <!-- debut formulaire-->
                   <form id="form" enctype="multipart/form-data" action="traitement-formulaire-test.php" 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="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>
    				  
                                    <!-- debut traitemnt captcha -->
                      <h3>Captcha</h3>
    				  
                      <!-- la question récupérée  -->
                      <div><?= $question ?></div>
    				  
                      <!-- retour éventuel renvoyé par la page de traitement -->
                     <div><?= $_SESSION['msg'] ?></div>
                      <div>
                         <label for="">captcha</label>
                         <input type="text" name="captcha">
                      </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>
    


    le traitement

    <?php
    session_start();
    
    // phase du captcha
    // Si la reponse de l'input captcha n'est pas vide
    var_dump($_POST['captcha']);
    
    if(!empty($_POST['captcha'])){
    	
        // On stock la reponse dans une variable en faisant une éventuelle conversion des majuscules en minuscule
        $userAnswer = strtolower($_POST['captcha']);
    	
        // Si on envoi le formulaire
        if(isset($_POST['send'])){
            
    		var_dump($_POST['send']);
    		
            // On compare la réponse stocké dans la session avec la réponse de l'utilisateur
            if($_SESSION['answer'] == $userAnswer){
    			
    			var_dump($_SESSION['answer']);
                // Ici on stock dans session le message ok, mais on peut par exemple lancer le traitement d'un message en bdd ou d'un email.
                $_SESSION['msg'] = 'ok';
    			
            // Si la réponse n'est pas bonne
            }else{
    			
                // On envoi ici un message si la réponse n'est pas identique
                $_SESSION['msg'] = 'Captcha non valide...';
                 // Qu'on soit dans le if ou le else, on renvoit l'utilisateur sur le formulaire
                header('Location: https://phil.pecheperle.be/testcontact.php');
            }
    		
               
            }
    		
        // else pour pour le premier if, si $_POST['captcha'] est vide (à l'arrivée sur la page par exemple), on ne passe aucun message a l'utilisateur et on redirige sur index
        }else{
            $_SESSION['msg'] = '';
            header('Location: https://phil.pecheperle.be/testcontact.php');
    }
    
    //on continue le reste du traitement enregistrement base de donnee +envois par mail
    if (!empty($_POST["send"]))
    {
        //Si les variable $_POST existent et ne sont  pas vide, on récupère la valeur, sinon je mets la variable $nom à 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"];
    	
    	// connexion base de donnee
        include ('base.php');
    	
        //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 transmission des donnees dans la table
    //l'envoie du mail
    if (!empty($_POST["send"]))
    {
        $messager = $_POST["messager"];
        $name = $_POST["name"];
        $subject = $_POST["subject"];
        $email = $_POST["email"];
        // 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 />";
        }
    }
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Alors...
      Tu peux retirer tous tes var_dump ... et simplement les remplacer ( à placer au tout début de tes deux fichiers )
      par :
      <?php
       // Démarrage de session 
       session_start();
         
       //on affiche les erreurs 
       error_reporting(E_ALL);
       ini_set('display_errors', TRUE);
       ini_set('display_startup_errors', TRUE);
      
      var_dump($_SESSION);
      var_dump($_POST);
      
      


      et puis.. ensuite ... mettre des var_dump c'est bien .... nous montrer ce qu'ils te retournent .. c'est mieux...
      0
    2. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Merci pour le code jordane
      et voici le résultat

      array(2) { ["msg"]=> string(21) "Captcha non valide..." ["answer"]=> string(5) "lundi" } array(0) { } 
      0
    3. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention  
       
      La ce sont les dump avant que tu ne submit le formulaire...
      Rempli le et submit pour voir..
      0
    4. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
       
      en fait comme tu peux le voir dans mon code le formulaire une fois remplit et submit
      l utilisateur est renvoyé vers une page de remerciement
      et donc on ne sait rien voir puisque nous ne sommes plus sur la page du formulaire
      0
    5. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention  
       
      Si c'est bon pense à cloturer le sujet.
      1
  7. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
     
    lorsque je fais un var_dump de ceci

     $question = $quiz[$id]['question'];
       Var_dump ($question );


    j'ai ceci qui est retourné

    string(21) "Captcha non valide..." string(42) "Quel est le troisième jour de la semaine?"
    0
  8. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
     
    bonsoir jordane
    je ne sais pas si tu as lu mon message
    Mais je le reposte , si tu passes par la ..

    non malheureusement cela n est pas bon
    lorsque je rentre une mauvaise réponse cela donne ceci au niveau des
    va_dump
    array(2) { ["msg"]=> string(21) "Captcha non valide..." ["answer"]=> string(5) "mardi" } array(0) { }

    Mais le formulaire est envoyé quand même
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Oui mais... tu as retiré les redirections pour pouvoir voir le résultat des dump .....
      Donc.. si pas de redirection... ton script ne s'arrête plus en cas d'erreur .....
      A la limite... remplace les redirections par des exit(); et là tu verras que tu ne vas pas plus loin...
      0
  9. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
     
    Merci pour l aide jordane
    j ai donc mis l exit
    Mais cette fois comme tu dis je ne vais pas plus loin
    que je rentre le bon ou le mauvais captcha
    mais en principe avant d enregistrer les données dans la base de donne et d envoyer le mail
    il devrait vérifier le captcha ?

    je viens donc de remplacer la redirection
    par ceci
    c est juste le morceau de code remplacer
    le code complet est après

       //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");
            exit(); 
        }
        else
        {
            $db_msg = "Erreur lors de la tentative d'enregistrement de contact.";
            $type_db_msg = "error";
        }


    <?php
     // Démarrage de session 
     session_start();
       
     //on affiche les erreurs 
     error_reporting(E_ALL);
     ini_set('display_errors', TRUE);
     ini_set('display_startup_errors', TRUE);
    
    var_dump($_SESSION);
    var_dump($_POST);
    
    // phase du captcha
    // Si la reponse de l'input captcha n'est pas vide
    //var_dump($_POST['captcha']);
    
    if(!empty($_POST['captcha'])){
    	
        // On stock la reponse dans une variable en faisant une éventuelle conversion des majuscules en minuscule
        $userAnswer = strtolower($_POST['captcha']);
    	
        // Si on envoi le formulaire
        if(isset($_POST['send'])){
            
    		//var_dump($_POST['send']);
    		
            // On compare la réponse stocké dans la session avec la réponse de l'utilisateur
            if($_SESSION['answer'] == $userAnswer){
    			
    			//var_dump($_SESSION['answer']);
                // Ici on stock dans session le message ok, mais on peut par exemple lancer le traitement d'un message en bdd ou d'un email.
                $_SESSION['msg'] = 'ok';
    			
            // Si la réponse n'est pas bonne
            }else{
    			
                // On envoi ici un message si la réponse n'est pas identique
                $_SESSION['msg'] = 'Captcha non valide...';
                 // Qu'on soit dans le if ou le else, on renvoit l'utilisateur sur le formulaire
                header('Location: https://phil.pecheperle.be/testcontact.php');
            }
    		
               
            }
    		
        // else pour pour le premier if, si $_POST['captcha'] est vide (à l'arrivée sur la page par exemple), on ne passe aucun message a l'utilisateur et on redirige sur index
        }else{
            $_SESSION['msg'] = '';
            header('Location: https://phil.pecheperle.be/testcontact.php');
    }
    
    //on continue le reste du traitement enregistrement base de donnee +envois par mail
    if (!empty($_POST["send"]))
    {
        //Si les variable $_POST existent et ne sont  pas vide, on récupère la valeur, sinon je mets la variable $nom à 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"];
    	
    	// connexion base de donnee
        include ('base.php');
    	
        //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");
            exit(); 
        }
        else
        {
            $db_msg = "Erreur lors de la tentative d'enregistrement de contact.";
            $type_db_msg = "error";
        }
    }
    //fin de la transmission des donnees dans la table
    //l'envoie du mail
    if (!empty($_POST["send"]))
    {
        $messager = $_POST["messager"];
        $name = $_POST["name"];
        $subject = $_POST["subject"];
        $email = $_POST["email"];
        // 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 />";
        }
    }
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      déjà.. il serait bien que tu nous précises le nom des fichiers pour chaque code que tu nous montres ...

      Ensuite... tu nous colles que des bouts de code.... il serait bien de nous mettre l'intégralité de tes fichiers !!! (je te le dis à chaque fois !!!!! )
      là.. on ne sait pas comment sont organisés tes scripts... où se trouvent les codes que tu nous montres ... dans quel ordre ... si il y d'autres choses avant ou après....
      1
      1. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Merci pour la réponse jordane et la réaction
        en fait j essaye d être le plus clair possible , mais cela n est pas toujours évident
        je pense avoir compris mon problème
        a la ligne 28 il y a ma condition que si elle vrai un message ok doit pouvoir s'afficher
        Mais a cet endroit je devrais venir insérer de 53 a 153
        de telle façon a ce que si la condition est bonne l envois de mon mail et l insertion de la base de donnée fonctionne
        voici le code du traitement que j'ai modifie
        Mais je me demande si mes imbrications sont bonne

        voici donc mon fichier de traitement
        <?php
         // Démarrage de session 
         session_start();
           
         //on affiche les erreurs 
         error_reporting(E_ALL);
         ini_set('display_errors', TRUE);
         ini_set('display_startup_errors', TRUE);
        
        var_dump($_SESSION);
        var_dump($_POST);
        
        // phase du captcha
        // Si la reponse de l'input captcha n'est pas vide
        //var_dump($_POST['captcha']);
        
        if(!empty($_POST['captcha'])){
         
            // On stock la reponse dans une variable en faisant une éventuelle conversion des majuscules en minuscule
            $userAnswer = strtolower($_POST['captcha']);
         
            // Si on envoi le formulaire
            if(isset($_POST['send'])){
                
          //var_dump($_POST['send']);
          
                // On compare la réponse stocké dans la session avec la réponse de l'utilisateur
                if($_SESSION['answer'] == $userAnswer){
           
           //var_dump($_SESSION['answer']);
                    // Ici on stock dans session le message ok, mais on peut par exemple lancer le traitement d'un message en bdd ou d'un email.
                   // $_SESSION['msg'] = 'ok';
        
        
        //on continue le reste du traitement enregistrement base de donnee +envois par mail
        if (!empty($_POST["send"]))
        {
           ​//Si les variable $_POST existent et ne sont  pas vide, on récupère la valeur, sinon je mets la variable $nom à 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"];
         
         // connexion base de donnee
           ​include ('base.php');
         
           ​//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");
               ​exit(); 
           ​}
           ​else
           ​{
               ​$db_msg = "Erreur lors de la tentative d'enregistrement de contact.";
               ​$type_db_msg = "error";
           ​}
        }
        //fin de la transmission des donnees dans la table
        //l'envoie du mail
        if (!empty($_POST["send"]))
        {
           ​$messager = $_POST["messager"];
           ​$name = $_POST["name"];
           ​$subject = $_POST["subject"];
           ​$email = $_POST["email"];
           ​// 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 />";
           ​}
        }
        
           
                // Si la réponse n'est pas bonne
                }else{
           
                    // On envoi ici un message si la réponse n'est pas identique
                    $_SESSION['msg'] = 'Captcha non valide...';
                     // Qu'on soit dans le if ou le else, on renvoit l'utilisateur sur le formulaire
                    header('Location: https://phil.pecheperle.be/testcontact.php');
                }
          
                   
                }
          
            // else pour pour le premier if, si $_POST['captcha'] est vide (à l'arrivée sur la page par exemple), on ne passe aucun message a l'utilisateur et on redirige sur index
            }else{
                $_SESSION['msg'] = '';
                header('Location: https://phil.pecheperle.be/testcontact.php');
        }
        
        
        0
  10. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
     
    j'ai comme l impression que la condition du captcha n est pas prise en compte dans le code
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      bonjour,
      que te retourne
      var_dump($_POST)
      ?
      pourquoi n'ajoutes-tu pas des
      echo();
      qui t'indiquent ce que fait ton code?
      1
      1. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        bonjour
        Ah mince j ai cette erreur lorsque je veux poster
        You don't have permission to access "http://forums.commentcamarche.net/forum/_xhr_/postmsgfrm/" on this server.
        Reference #18.1cc31302.1640854950.1e95b5f
        j avais fais une erreur dans le code je voulais envoyer
        0
  11. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
     
    bonjour
    Merci pour la reponse
    voila cela fonctionne enfin avec mon dernier code
    seul petit soucis lorsque la personne ne rentre pas le bon code le formulaire s'efface et la personne doit a nouveau tout remplir
    y-a t-il une solution ?
    je remets mon code de formulaire
    <?php
     // Démarrage de session 
     session_start();
       
     //on affiche les erreurs 
     error_reporting(E_ALL);
     ini_set('display_errors', TRUE);
     ini_set('display_startup_errors', TRUE);
    
    var_dump($_SESSION);
    var_dump($_POST);
       
    
    //ou avec !EMPTY() 
    //Si la variable $_POST['truc'] existe et n'est pas vide, alors $truc = $_POST['truc']  sinon elle vaut NULL 
    $_SESSION['msg']= !empty($_SESSION['msg']) ? $_SESSION['msg'] : NULL;
       
        // Tableau avec les différentes questions/réponses pour notre captcha
       $quiz = [
           0 => [
               'question' => 'Quel est le premier jour de la semaine?',
               'answer' => 'lundi'
           ],
           1 => [
               'question' => 'Quel est le deuxième jour de la semaine?',
               'answer' => 'mardi'
           ],
           2 => [
               'question' => 'Quel est le troisième jour de la semaine?',
               'answer' => 'mercredi'
           ],
       ];
       
       // On utilise array_rand pour avoir un id aléatoire de notre tableau
       $id = array_rand($quiz);
       
       // On utilise l'id donné par array_rand pour pouvoir stocker la bonne réponse dans $_SESSION['reponse']
       $_SESSION['answer'] = $quiz[$id]['answer'];
       
       //Var_dump ($_SESSION['answer']);
     // Var_dump ($_SESSION['msg']);
       
       // On stock la question dans une variable toujours via l'id donné par array_rand
       //Var_dump ($quiz[$id] );
       
       $question = $quiz[$id]['question'];
       //Var_dump ($question );
       ?>
    <!doctype html>
    <html lang="fr">
       <!-- debut head -->
       <head>
          <?php include("./include/head.php"); ?>
          <!-- deux scripts tarteaucitron le deuxiem est celui qui devrait etres mis en dur dans chque page-->
          <script  src="/tarteaucitron/tarteaucitron.js"></script>
          <script src="/js/tartecitron-peche-perle2.js"></script>
          <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"/>
       </head>
       <!-- fin head -->
       
       <!-- debut body -->
       <body style="background-color:#cec1c1;" onLoad="document.getElementById('attente').style.display='none'">
          <div class="container" style="background-color:#87CEEB;">
       
             <!-- 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>
       
             <!-- id attende chargement page -->
             <div id='attente'>
                <p style="text-align: center;font-size: 24px;">Veuillez patienter svp la page est en cours de chargement ...</p>
             </div>
       
             <!-- debut body -->
             <body>
       
                <!-- debut container page -->
                <div class="container1 border border-dark" style="padding: 15px;background: #ECE9E7;">
       
                   <!-- debut formulaire-->
                   <form id="form" enctype="multipart/form-data" action="traitement-formulaire-test.php" 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="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>
          
                                    <!-- debut traitemnt captcha -->
                      <h3>Captcha</h3>
          
                      <!-- la question récupérée  -->
                      <div><?= $question ?></div>
          
                      <!-- retour éventuel renvoyé par la page de traitement -->
                     <div><?= $_SESSION['msg'] ?></div>
                      <div>
                         <label for="">captcha</label>
                         <input type="text" name="captcha">
                      </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>
    
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Tu peux stocker les données saisies en variables de SESSION et les remettre lorsque la personne revient sur le formulaire..
      1
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Ou immédiatement afficher le formulaire avec les données reçues dans le POST.
        1
      2. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Merci pour la réponse
        mais je réalise cela comment
        0
      3. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        oufti les données saisies en variable de session
        comme ceci alors

          $_session['name'] = !empty($_session['name']) ? $_session['name'] : NULL;
            $_session['email']  = !empty($_session['email']) ? $_session['email'] : NULL;
            $_session['subject'= !empty($_session['subject']) ? $_session['subject'] : NULL;
            $_session['messager'] = !empty($_session['messager']) ? $_session['messager'] : NULL;

        Mais ensuite je les utilises comment ?
        0
  12. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
     
    et mon traitement
    <?php
     // Démarrage de session 
     session_start();
       
     //on affiche les erreurs 
     error_reporting(E_ALL);
     ini_set('display_errors', TRUE);
     ini_set('display_startup_errors', TRUE);
    
    var_dump($_SESSION);
    var_dump($_POST);
    
    // phase du captcha
    // Si la reponse de l'input captcha n'est pas vide
    //var_dump($_POST['captcha']);
    
    if(!empty($_POST['captcha'])){
    	
        // On stock la reponse dans une variable en faisant une éventuelle conversion des majuscules en minuscule
        $userAnswer = strtolower($_POST['captcha']);
    	
        // Si on envoi le formulaire
        if(isset($_POST['send'])){
            
    		//var_dump($_POST['send']);
    		
            // On compare la réponse stocké dans la session avec la réponse de l'utilisateur
            if($_SESSION['answer'] == $userAnswer){
    			
    			//var_dump($_SESSION['answer']);
                // Ici on stock dans session le message ok, mais on peut par exemple lancer le traitement d'un message en bdd ou d'un email.
                //$_SESSION['msg'] = 'ok';
                
                //on continue le reste du traitement enregistrement base de donnee +envois par mail
    if (!empty($_POST["send"]))
    {
        //Si les variable $_POST existent et ne sont  pas vide, on récupère la valeur, sinon je mets la variable $nom à 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"];
    	
    	// connexion base de donnee
        include ('base.php');
    	
        //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");
            //exit(); 
        }
        else
        {
            $db_msg = "Erreur lors de la tentative d'enregistrement de contact.";
            $type_db_msg = "error";
        }
    }
    //fin de la transmission des donnees dans la table
    //l'envoie du mail
    if (!empty($_POST["send"]))
    {
        $messager = $_POST["messager"];
        $name = $_POST["name"];
        $subject = $_POST["subject"];
        $email = $_POST["email"];
        // 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 />";
        }
    }
      
    			
            // Si la réponse n'est pas bonne
            }else{
    			
                // On envoi ici un message si la réponse n'est pas identique
                $_SESSION['msg'] = 'Captcha non valide...';
                 // Qu'on soit dans le if ou le else, on renvoit l'utilisateur sur le formulaire
                header('Location: https://phil.pecheperle.be/testcontact.php');
            }
    		
               
            }
    		
        // else pour pour le premier if, si $_POST['captcha'] est vide (à l'arrivée sur la page par exemple), on ne passe aucun message a l'utilisateur et on redirige sur index
        }else{
            $_SESSION['msg'] = '';
            header('Location: https://phil.pecheperle.be/testcontact.php');
    }
    
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      
      //on stocke toutes les données POST en SESSION
      $_SESSION['POST'] = $_POST;
      
      if(!empty($_POST['captcha'])){
       
          // On stock la reponse dans une variable en faisant une éventuelle conversion des majuscules en minuscule
          $userAnswer = strtolower($_POST['captcha']);
       
          // Si on envoi le formulaire
          if(isset($_POST['send'])){
              
         
      
      


      et dans ton formulaire
      	 <input id="name" name="name" type="text" value="<?php echo isset($_SESSION['POST']['name']) ? $_SESSION['POST']['name'] : ""?>" placeholder=""  required="">
      
      1
      1. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Super nickel jordane un grand merci
        cela fonctionne sauf avec textarea
        ou la variable n est pas stocker

        <?php
         // Démarrage de session 
         session_start();
           
         //on affiche les erreurs 
         error_reporting(E_ALL);
         ini_set('display_errors', TRUE);
         ini_set('display_startup_errors', TRUE);
        
        var_dump($_SESSION);
        var_dump($_POST);
           
        
        //ou avec !EMPTY() 
        //Si la variable $_POST['truc'] existe et n'est pas vide, alors $truc = $_POST['truc']  sinon elle vaut NULL 
        $_SESSION['msg']= !empty($_SESSION['msg']) ? $_SESSION['msg'] : NULL;
           
            // Tableau avec les différentes questions/réponses pour notre captcha
           $quiz = [
               0 => [
                   'question' => 'Quel est le premier jour de la semaine?',
                   'answer' => 'lundi'
               ],
               1 => [
                   'question' => 'Quel est le deuxième jour de la semaine?',
                   'answer' => 'mardi'
               ],
               2 => [
                   'question' => 'Quel est le troisième jour de la semaine?',
                   'answer' => 'mercredi'
               ],
           ];
           
           // On utilise array_rand pour avoir un id aléatoire de notre tableau
           $id = array_rand($quiz);
           
           // On utilise l'id donné par array_rand pour pouvoir stocker la bonne réponse dans $_SESSION['reponse']
           $_SESSION['answer'] = $quiz[$id]['answer'];
           
           //Var_dump ($_SESSION['answer']);
         // Var_dump ($_SESSION['msg']);
           
           // On stock la question dans une variable toujours via l'id donné par array_rand
           //Var_dump ($quiz[$id] );
           
           $question = $quiz[$id]['question'];
           //Var_dump ($question );
           ?>
        <!doctype html>
        <html lang="fr">
           <!-- debut head -->
           <head>
              <?php include("./include/head.php"); ?>
              <!-- deux scripts tarteaucitron le deuxiem est celui qui devrait etres mis en dur dans chque page-->
              <script  src="/tarteaucitron/tarteaucitron.js"></script>
              <script src="/js/tartecitron-peche-perle2.js"></script>
              <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"/>
           </head>
           <!-- fin head -->
           
           <!-- debut body -->
           <body style="background-color:#cec1c1;" onLoad="document.getElementById('attente').style.display='none'">
              <div class="container" style="background-color:#87CEEB;">
           
                 <!-- 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>
           
                 <!-- id attende chargement page -->
                 <div id='attente'>
                    <p style="text-align: center;font-size: 24px;">Veuillez patienter svp la page est en cours de chargement ...</p>
                 </div>
           
                 <!-- debut body -->
                 <body>
           
                    <!-- debut container page -->
                    <div class="container1 border border-dark" style="padding: 15px;background: #ECE9E7;">
           
                       <!-- debut formulaire-->
                       <form id="form" enctype="multipart/form-data" action="traitement-formulaire-test.php" 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>-->
                             <input id="name" name="name" type="text" value="<?php echo isset($_SESSION['POST']['name']) ? $_SESSION['POST']['name'] : ""?>" placeholder=""  required="">
                          </div>
                          <div class="form-group">
                             <label for="email">Email:<span>*</span></label>
                           <!--   <input type="email" class="form-control" id="email" name="email" placeholder="Email">-->
                             <input id="email" name="email" type="email" value="<?php echo isset($_SESSION['POST']['email']) ? $_SESSION['POST']['email'] : ""?>" placeholder=""  required="">
                             
                          </div>
                          <div class="form-group">
                             <label for="subject">Sujet:</label>
                          <!--   <input type="text" id="subject" name="subject" class="form-control" placeholder="Demande de renseignement">-->
                           <input id="subject" name="subject" type="text" value=" <?php echo isset($_SESSION['POST']['subject']) ? $_SESSION['POST']['subject'] : ""?>" placeholder=""  required="">
                          </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>-->
                            <textarea name="messager"  id="messager" rows="3" value="
                            <?php echo isset($_SESSION['POST']['messager']) ? $_SESSION['POST']['messager'] : ""?>" placeholder="" required =""></textarea>
                          </div>
                                        <!-- debut traitemnt captcha -->
                          <h3>Captcha</h3>
              
                          <!-- la question récupérée  -->
                          <div><?= $question ?></div>
              
                          <!-- retour éventuel renvoyé par la page de traitement -->
                         <div><?= $_SESSION['msg'] ?></div>
                          <div>
                             <label for="">captcha</label>
                             <input type="text" name="captcha">
                          </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>
        0
      2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention  
         
        il n'y a pas de méthode value dans textarea....
        c'est directement
        <textarea name="messager"  id="messager" rows="3" placeholder="" required ="">
           <?php echo isset($_SESSION['POST']['messager']) ? $_SESSION['POST']['messager'] : ""?>
        </textarea>
                       
        
        1
      3. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        ah bon
        je pouvais encore bien chercher Mdrrrrr
        un immense merci jordane
        c est super cela fonctionne entièrement
        de joyeuses fêtes a toi et a toute l équipe de comment ca marche
        Mes meilleurs vœux a tous
        et encore merci pour toute cette aide de 2021
        0
  13. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
     
    j'ai trouve ce code mais j ai une erreur de syntaxe avec le
    {


    	 <input id="name" name="name" type="text" value="<?php if(isset($_SESSION['name']){echo $_SESSION['name'];}?>" placeholder=""  required="">
    0