.:: Formulaire d'envoi de mails ::.
.:: Formulaire d'envoi de mails ::.
Voici ce que ce code donne à l'écran (avec la feuille de style ;-)) :
{{:generale:php:formulaire-1.jpg|:generale:php:formulaire-1.jpg}}
Passons à présent au code de traitement de ce formulaire, dans la page nommée //envoi.php// :
/***********************************************************
* Fonction pour vérifier la validite d'un mail *
* - on check la présence de caractères spéciaux *
* - on vérifie que le domaine ait un enregistrement DNS *
***********************************************************/
function check_email_mx($email)
{
if( (preg_match('/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/', $email)) || (preg_match('/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/',$email)) )
{
$host = explode('@', $email);
if(checkdnsrr($host[1].'.', 'MX') ) return true;
if(checkdnsrr($host[1].'.', 'A') ) return true;
if(checkdnsrr($host[1].'.', 'CNAME') ) return true;
}
return false;
}
/***********************************************************************
* Verification des champs du mail *
* - on check la présence champs multi-lignes *
* - cf : http://www.phpsecure.info/v2/article/MailHeadersInject.php *
***********************************************************************/
function verify($champ)
{
if (eregi("\r",$champ) || eregi("\n",$champ)){
return true;
}
return false;
}
/*************************************************************************
* Gestion des erreurs *
* - appel aux fonctions précédentes et définition du message d'erreur *
*************************************************************************/
//Gestion des erreurs
if (($_POST['de'] == null) || ($_POST['a'] == null) || ($_POST['sujet'] == null) || ($_POST['message'] == null))
$erreur = "Veuillez renseigner tout les champs";
if (!check_email_mx($_POST['de']) || !check_email_mx($_POST['a']))
$erreur = "Adresse email invalide";
if (verify($_POST['de']) || verify($_POST['a']) || verify($_POST['sujet']))
$erreur = "Les champs multi-lignes sont interdits";
?>
.:: Formulaire d'envoi de mails ::.
.:: Formulaire d'envoi de mails ::.
if (isset($erreur))
echo $erreur;
else {
// Envoi effectif du mail, après avoir vérifié la sécurité de chaque champ
if (mail($_POST['a'], $_POST['sujet'], $_POST['message'], "From: ".$_POST['de']."\n"));
echo "Votre email a ete envoye a : ".$_POST['a'];
}
?>
Retour
Voici le résultat de l'envoi d'un email, lorsque tout les champs sont valides ; l'un des messages d'erreur défini dans le script est affiché si un problème a été rencontré :
{{:generale:php:formulaire-2.jpg|:generale:php:formulaire-2.jpg}}
Ce code est un simple petit exemple mais peut tout a fait être adapté à des besoins divers, comme l'écriture d'un formulaire de contact sécurisé, en placant en dur votre adresse destinataire par exemple.
Et voici [[http://web1w1.nfrance.com/~simeon/email.tar.gz|l'archive]] contenant ces fichiers.
Bon code ;-)
//L'équipe NFrance//