1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
| <?php
define( 'MAIL_TO' ,"monadresse@mail.be" ); //ajouter votre courriel
define( 'MAIL_NOM' ,'Votre Nom' ); // valeur par défaut
define( 'MAIL_PRENOM' ,'Votre Prénom' ); // valeur par défaut
define( 'MAIL_FROM' ,'Votre E-mail' ); // 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
$mailto = MAIL_TO;
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.';
}
/* 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.';
}
if( count( $errors ) === 0 ) // si il n'y a pas d'erreurs
{
if( mail( MAIL_TO, $object, $message) ) // 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
{
$nom = MAIL_NOM;
$prenom = MAIL_PRENOM;
$from = MAIL_FROM;
$object = MAIL_OBJECT;
$message = MAIL_MESSAGE;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="fr" xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<meta http-equiv="content-language" content="fr" />
</head>
<body>
<?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>
<?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">Nom</label>
<input type="text" name="from" id="from" value="<?php echo( $nom ); ?>" /><br />
<label for="from">Prénom</label>
<input type="text" name="from" id="from" value="<?php echo( $prenom ); ?>" /><br />
<label for="from">E-mail*</label>
<input type="text" name="from" id="from" value="<?php echo( $from ); ?>" /><br />
<label for="object">Objet*</label>
<input type="text" name="object" id="object" value="<?php echo( $object ); ?>" /><br />
<label for="message">Message*</label>
<textarea name="message" id="message" rows="20" cols="80"><?php echo( $message ); ?></textarea>
</p>
<em>Les champs marqué d'une * sont obligatoires</em>
<p>
<input class="boutton" type="reset" name="reset" value="Effacer" />
<input class="boutton" type="submit" name="send" value="Envoyer" />
</p>
</form>
<?php
}
?>
</body>
</html> |
Partager