Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- define( 'MAIL_TO', /* >>>>> */'flammrockgame@gmail.com'/* <<<<< */ ); //ajouter votre courriel
- define( 'MAIL_FROM', 'utilisateur@domaine.tld' ); // valeur par défaut
- define( 'MAIL_OBJECT', 'objet du message' ); // valeur par défaut
- define( 'MAIL_MESSAGE', 'votre message' ); // valeur par défaut
- $mailSent = false; // drapeau qui aiguille l'affichage du formulaire OU du récapitulatif
- $errors = array(); // tableau des erreurs de saisie
- if( filter_has_var( INPUT_POST, 'send' ) ) // le formulaire a été soumis avec le bouton [Envoyer]
- {
- $from = filter_input( INPUT_POST, 'from', FILTER_VALIDATE_EMAIL );
- if( $from === NULL || $from === MAIL_FROM ) // si le courriel fourni est vide OU égale à la valeur par défaut
- {
- $errors[] = 'Vous devez renseigner votre adresse de courrier électronique.';
- }
- elseif( $from === false ) // si le courriel fourni n'est pas valide
- {
- $errors[] = 'L\'adresse de courrier électronique n\'est pas valide.';
- $from = filter_input( INPUT_POST, 'from', FILTER_SANITIZE_EMAIL );
- }
- $object = filter_input( INPUT_POST, 'object', FILTER_SANITIZE_STRING, FILTER_FLAG_ENCODE_HIGH | FILTER_FLAG_ENCODE_LOW );
- 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
- {
- $errors[] = 'Vous devez renseigner l\'objet.';
- }
- //une petite liste de légumes pour le fun :)
- $list_legum = filter_input( INPUT_POST, 'list_legume', FILTER_SANITIZE_STRING, FILTER_FLAG_ENCODE_HIGH | FILTER_FLAG_ENCODE_LOW );
- if( $list_legum === NULL OR $list_legum === false OR empty( $list_legum )) // si l'objet fourni est vide, invalide
- {
- $errors[] = 'Vous devez sélectionner un légume dans la liste.';
- }
- /* pas besoin de nettoyer le message.
- / [http://www.phpsecure.info/v2/article/MailHeadersInject.php]
- / Logiquement, les parties message, To: et Subject: pourraient servir aussi à injecter quelque chose, mais la fonction mail()
- / 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,
- / c'est considéré comme du texte; le message ne saurait donc rester qu'un message.*/
- $message = filter_input( INPUT_POST, 'message', FILTER_UNSAFE_RAW);
- 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
- {
- $errors[] = 'Vous devez écrire un message.';
- }
- //On ajoute ensuite tous ce qu'on veux dans message notamment la liste de légume :)
- $message_final = $message . "\n \n __________________ \n Votre choix est : " . $list_legum;
- if( count( $errors ) === 0 ) // s'il n'y a pas d'erreurs
- {
- if( mail( MAIL_TO, $object, $message_final, "From: $from\nReply-to: $from\n", $list_legum ) ) // tentative d'envoi du message
- {
- $mailSent = true;
- }
- else // échec de l'envoi
- {
- $errors[] = 'Votre message n\'a pas été envoyé.';
- }
- }
- }
- else // le formulaire est affiché pour la première fois, avec les valeurs par défaut
- {
- $from = MAIL_FROM;
- $object = MAIL_OBJECT;
- $message = MAIL_MESSAGE;
- }
- ?>
- <!DOCTYPE html>
- <html lang="fr" xmlns="[http://www.w3.org/1999/xhtml]" xml:lang="fr">
- <head>
- <title>Contact</title>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <meta http-equiv="content-language" content="fr" />
- <style type="text/css">
- * { outline: 0; }
- html{ font-family:Geneva, Arial, Helvetica, sans-serif; margin:0; padding:0; font-size:.88em;}
- body{ width:772px; margin:0 auto; padding:0; }
- textarea{ width:772px; }
- label{ display:block; font-weight:bold; }
- p#welcome{ padding:10px 20px; border:1px dotted #00f; color:#00f; font-weight:bold; }
- ul{ padding:10px 20px; border:1px dotted #f00; color:#f00; font-weight:bold; }
- p#success{ padding:10px 20px; border:1px dotted #0f0; color:#0f0; font-weight:bold; }
- p em{ display:block; font-weight:normal; }
- </style>
- </head>
- <body>
- <h1>Contact</h1>
- <hr />
- <?php
- if( $mailSent === true ) // si le message a bien été envoyé, on affiche le récapitulatif
- {
- ?>
- <p id="success">Votre message a bien été envoyé.</p>
- <p><strong>Courriel pour la réponse :</strong><br /><?php echo( $from ); ?></p>
- <p><strong>Objet :</strong><br /><?php echo( $object ); ?></p>
- <p><strong>Message :</strong><br /><?php echo( nl2br( htmlspecialchars( $message ) ) ); ?></p>
- <p><strong>Légume choisi :</strong><br /><?php echo( nl2br( htmlspecialchars( $list_legum ) ) ); ?></p>
- <br /><br />
- <!-- bouton permettant de renvoyer un mail en replaçant l'url par la même url pour reset le php -->
- <input type="button" value="<< Envoyer un autre mail >>" onclick="document.location.replace('<?php echo( $_SERVER['REQUEST_URI'] ); ?>');"/>
- <?php
- }
- else // le formulaire est affiché pour la première fois ou le formulaire a été soumis mais contenait des erreurs
- {
- if( count( $errors ) !== 0 )
- {
- echo( "\t\t<ul>\n" );
- foreach( $errors as $error )
- {
- echo( "\t\t\t<li>$error</li>\n" );
- }
- echo( "\t\t</ul>\n" );
- }
- else
- {
- echo( "\t\t<p id=\"welcome\"><em>Tous les champs sont obligatoires</em></p>\n" );
- }
- ?>
- <form id='contact' method="post" action="<?php echo( $_SERVER['REQUEST_URI'] ); ?>">
- <p>
- <label for="from">Courriel pour la réponse</label>
- <input type="text" name="from" id="from" value="<?php echo( $from ); ?>" />
- </p>
- <p>
- <label for="object">Objet</label>
- <input type="text" name="object" id="object" value="<?php echo( $object ); ?>" />
- </p>
- <p>
- <label for="message">Message</label>
- <textarea name="message" id="message" rows="20" cols="80"><?php echo( $message ); ?></textarea>
- </p>
- <p>
- Quelles légumes préférés vous parmi cette liste :
- <select name="list_legume">
- <option>Chou-fleur</option>
- <option>Carrote</option>
- <option>Patate !</option>
- </select>
- </p>
- <p>
- <input type="reset" name="reset" value="Effacer" />
- <input type="submit" name="send" value="Envoyer" />
- </p>
- </form>
- <?php
- }
- ?>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement