Advertisement
Guest User

Untitled

a guest
Nov 28th, 2016
1,023
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 7.03 KB | None | 0 0
  1. <?php  
  2.     define( 'MAIL_TO', /* >>>>> */'flammrockgame@gmail.com'/* <<<<< */ );  //ajouter votre courriel  
  3.     define( 'MAIL_FROM', 'utilisateur@domaine.tld' ); // valeur par défaut  
  4.     define( 'MAIL_OBJECT', 'objet du message' ); // valeur par défaut  
  5.     define( 'MAIL_MESSAGE', 'votre message' ); // valeur par défaut
  6.  
  7.     $mailSent = false; // drapeau qui aiguille l'affichage du formulaire OU du récapitulatif  
  8.     $errors = array(); // tableau des erreurs de saisie  
  9.      
  10.     if( filter_has_var( INPUT_POST, 'send' ) ) // le formulaire a été soumis avec le bouton [Envoyer]  
  11.     {  
  12.         $from = filter_input( INPUT_POST, 'from', FILTER_VALIDATE_EMAIL );  
  13.         if( $from === NULL || $from === MAIL_FROM ) // si le courriel fourni est vide OU égale à la valeur par défaut  
  14.         {  
  15.             $errors[] = 'Vous devez renseigner votre adresse de courrier électronique.';  
  16.         }  
  17.         elseif( $from === false ) // si le courriel fourni n'est pas valide  
  18.         {  
  19.             $errors[] = 'L\'adresse de courrier électronique n\'est pas valide.';  
  20.             $from = filter_input( INPUT_POST, 'from', FILTER_SANITIZE_EMAIL );  
  21.         }  
  22.  
  23.         $object = filter_input( INPUT_POST, 'object', FILTER_SANITIZE_STRING, FILTER_FLAG_ENCODE_HIGH | FILTER_FLAG_ENCODE_LOW );
  24.         if( $object === NULL OR $object === false OR empty( $object ) OR $object === MAIL_OBJECT ) // si l'objet fourni est vide, invalide ou égale à la valeur par défaut  
  25.         {  
  26.             $errors[] = 'Vous devez renseigner l\'objet.';  
  27.         }
  28.        
  29.         //une petite liste de légumes pour le fun :)
  30.         $list_legum = filter_input( INPUT_POST, 'list_legume', FILTER_SANITIZE_STRING, FILTER_FLAG_ENCODE_HIGH | FILTER_FLAG_ENCODE_LOW );
  31.         if( $list_legum === NULL OR $list_legum === false OR empty( $list_legum )) // si l'objet fourni est vide, invalide
  32.         {  
  33.             $errors[] = 'Vous devez sélectionner un légume dans la liste.';  
  34.         }
  35.        
  36.        
  37.          /* pas besoin de nettoyer le message.  
  38.          / [http://www.phpsecure.info/v2/article/MailHeadersInject.php]  
  39.          / Logiquement, les parties message, To: et Subject: pourraient servir aussi à injecter quelque chose,  mais la fonction mail()  
  40.          / filtre bien les deux dernières, et la première est le message, et à partir du moment où on a sauté une ligne dans l'envoi du mail,  
  41.          / c'est considéré comme du texte; le message ne saurait donc rester qu'un message.*/  
  42.         $message = filter_input( INPUT_POST, 'message', FILTER_UNSAFE_RAW);
  43.         if( $message === NULL OR $message === false OR empty( $message ) OR $message === MAIL_MESSAGE ) // si le message fourni est vide ou égale à la valeur par défaut  
  44.         {  
  45.             $errors[] = 'Vous devez écrire un message.';  
  46.         }
  47.        
  48.        
  49.         //On ajoute ensuite tous ce qu'on veux dans message notamment la liste de légume :)
  50.         $message_final = $message . "\n \n __________________ \n Votre choix est : " . $list_legum;
  51.  
  52.         if( count( $errors ) === 0 ) // s'il n'y a pas d'erreurs  
  53.         {  
  54.             if( mail( MAIL_TO, $object, $message_final, "From: $from\nReply-to: $from\n", $list_legum ) ) // tentative d'envoi du message  
  55.             {  
  56.                 $mailSent = true;  
  57.             }  
  58.             else // échec de l'envoi  
  59.             {  
  60.                 $errors[] = 'Votre message n\'a pas été envoyé.';  
  61.             }  
  62.         }  
  63.     }  
  64.     else // le formulaire est affiché pour la première fois, avec les valeurs par défaut  
  65.     {  
  66.         $from = MAIL_FROM;  
  67.         $object = MAIL_OBJECT;  
  68.         $message = MAIL_MESSAGE;  
  69.     }  
  70. ?>  
  71. <!DOCTYPE html>
  72. <html lang="fr" xmlns="[http://www.w3.org/1999/xhtml]" xml:lang="fr">  
  73.     <head>  
  74.         <title>Contact</title>  
  75.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  76.         <meta http-equiv="content-language" content="fr" />  
  77.         <style type="text/css">
  78.             * { outline: 0; }
  79.             html{ font-family:Geneva, Arial, Helvetica, sans-serif; margin:0; padding:0; font-size:.88em;}  
  80.             body{ width:772px; margin:0 auto; padding:0; }  
  81.             textarea{ width:772px; }  
  82.             label{ display:block; font-weight:bold; }  
  83.             p#welcome{ padding:10px 20px; border:1px dotted #00f; color:#00f; font-weight:bold; }  
  84.             ul{ padding:10px 20px; border:1px dotted #f00; color:#f00; font-weight:bold; }  
  85.             p#success{ padding:10px 20px; border:1px dotted #0f0; color:#0f0; font-weight:bold; }  
  86.             p em{ display:block; font-weight:normal; }  
  87.         </style>  
  88.     </head>  
  89.     <body>  
  90.         <h1>Contact</h1>  
  91.         <hr />  
  92.         <?php  
  93.             if( $mailSent === true ) // si le message a bien été envoyé, on affiche le récapitulatif  
  94.             {  
  95.         ?>  
  96.         <p id="success">Votre message a bien été envoyé.</p>
  97.         <p><strong>Courriel pour la réponse :</strong><br /><?php echo( $from ); ?></p>
  98.         <p><strong>Objet :</strong><br /><?php echo( $object ); ?></p>
  99.         <p><strong>Message :</strong><br /><?php echo( nl2br( htmlspecialchars( $message ) ) ); ?></p>
  100.         <p><strong>Légume choisi :</strong><br /><?php echo( nl2br( htmlspecialchars( $list_legum ) ) ); ?></p>
  101.         <br /><br />
  102.        
  103.         <!-- bouton permettant de renvoyer un mail en replaçant l'url par la même url pour reset le php -->
  104.         <input type="button" value="<< Envoyer un autre mail >>" onclick="document.location.replace('<?php echo( $_SERVER['REQUEST_URI'] ); ?>');"/>
  105.         <?php  
  106.             }  
  107.             else // le formulaire est affiché pour la première fois ou le formulaire a été soumis mais contenait des erreurs  
  108.             {  
  109.                 if( count( $errors ) !== 0 )  
  110.                 {  
  111.                     echo( "\t\t<ul>\n" );  
  112.                     foreach( $errors as $error )  
  113.                     {  
  114.                         echo( "\t\t\t<li>$error</li>\n" );  
  115.                     }  
  116.                     echo( "\t\t</ul>\n" );  
  117.                 }  
  118.                 else  
  119.                 {  
  120.                     echo( "\t\t<p id=\"welcome\"><em>Tous les champs sont obligatoires</em></p>\n" );  
  121.                 }  
  122.         ?>  
  123.         <form id='contact' method="post" action="<?php echo( $_SERVER['REQUEST_URI'] ); ?>">  
  124.             <p>  
  125.                 <label for="from">Courriel pour la réponse</label>  
  126.                 <input type="text" name="from" id="from" value="<?php echo( $from ); ?>" />  
  127.             </p>  
  128.             <p>  
  129.                 <label for="object">Objet</label>  
  130.                 <input type="text" name="object" id="object" value="<?php echo( $object ); ?>" />  
  131.             </p>  
  132.             <p>  
  133.                 <label for="message">Message</label>  
  134.                 <textarea name="message" id="message" rows="20" cols="80"><?php echo( $message ); ?></textarea>  
  135.             </p>
  136.             <p>
  137.                 Quelles légumes préférés vous parmi cette liste :
  138.                 <select name="list_legume">
  139.                     <option>Chou-fleur</option>
  140.                     <option>Carrote</option>
  141.                     <option>Patate !</option>
  142.                 </select>
  143.             </p>
  144.             <p>  
  145.                 <input type="reset" name="reset" value="Effacer" />  
  146.                 <input type="submit" name="send" value="Envoyer" />  
  147.             </p>  
  148.         </form>  
  149.         <?php  
  150.             }  
  151.         ?>  
  152.     </body>  
  153. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement