Créer une page de contact en PHP

Nous allons d'abord créer une formulaire en html puis nous allons créer une page en PHP pour le traitement et l'export des données du formulaire. Je l'ai crée lorsque je souhaitais  faire une formulaire sans utiliser ma base de données pour éviter de me faire pirater celle-ci par une petite injection. Le meilleur moyen était donc de créer un formulaire n'utilisant pas une base de données mais la fonction mail de PHP. Si vous etes pret donc allons y...


Le principe est simple un utilisateur rempli le formulaire, une page traite les champs du formulaire et envoie les réponses directement par mail au destinataire de mon choix.

ATTENTION : Pour ceux qui souhaite le tester en local vérifier que votre serveur Web est paramétré,. Lorsque c’est chez un hébergeur en général c’est déjà fait (sinon faites-le ou demandez-le). Allez en fin de page pour voir le paramétrage.

Créons le formulaire en HTML. Voici une exemple de code pour un formulaire d’entreprise (la classe), à inclure dans une page HTML :

<form action="traitement.php" method="post">
<p>
<strong>Nom<span style="color: #ff0000;">*</span> :</strong> <label for="nom"> </label> <input id="nom" name="nom" size="28" type="text" /> 
<strong>Prénom :</strong> <label for="prenom"></label> <input id="prenom" name="prenom" size="27" type="text" /> <br /><br /> 
<strong> Société : </strong><br /> <label for="societe"> </label> <input id="societe" name="societe" size="81" type="text" /> <br /><br /> 
<strong> RCS : </strong><br /> <label for="rcs"> </label> <input id="rcs" name="rcs" size="81" type="text" /> <br /><br /> 
<strong>Adresse : </strong><br /> <label for="adresse"></label> <input id="adresse" name="adresse" size="81" type="text" /> <br /><br /> 
<strong>Code Postal  :</strong> <label for="code"></label> <input id="code" name="code" size="13" type="text" /> 
<strong>Ville : </strong> <label for="ville"></label> <input id="ville" name="ville" size="39" type="text" /> <br /><br /> 
<strong>Téléphone<span style="color: #ff0000;">*</span> :<label for="telephone"></label></strong> <input id="telephone" name="telephone" size="27" type="text" /> 
<strong>Fax :</strong> <label for="fax"></label> <input id="fax" name="fax" size="27" type="text" /> <br /> <br /> 
<strong>Mail <span style="color: #ff0000;">*</span> : </strong><br /> <label for="mail"> </label><input id="mail" name="mail" size="81" type="text" /></p>
<p>Pour quelle raison nous contactez-vous ?</p>
<label for="motif"></label> <select id="motif" name="motif"> <option value="reglement">Pour un renseignement</option> 
<option value="enquete_commerciales">Pour une vidéo</option>
<option value="enquete_civile">Pour un article</option> 
<option value="recouvrement">Pour autre chose</option> 
 </select>
<p>Message <span style="color: #ff0000;">*</span> :</p>
<p><label for="message"></label> <textarea id="message" cols="52" rows="7" name="message"></textarea></p>
<input type="reset" value="Effacer" /> <input type="submit" value="Envoyer" />
<p> </p>
</form>
Bien évidemment à vous de le rendre plus joli avec un fond d’écran et un peu de CSS et de l’adapter à vos besoins. Désormais le formulaire de contact est en place. Mais que se passe t-il en l’état si l’utilisateur remplit les champs et appuie sur envoyer ?…. rien ! Pour qu’il se passe quelque chose nous allons envoyer les champs remplis à une page qui traitera ceux-ci et se chargera de l’envoi par e-mail vers le Webmaster (ou qui vous voulez) qui récupérera les informations du formulaire. Comme vous pouvez le voir en haut du code de la page HTML dans cette ligne :
Je vais utiliser, pour traiter les informations envoyées, la page traitement.php.

CODE COMPLET POUR CRÉER UN FORMULAIRE DE CONTACTE EN PHP

Celle-ci contient le code ci-après. Vous avez les commentaires pour savoir ce que font les lignes. Par exemple un peu de sécurité en empêchant de mettre des en-têtes dans les champs, vérifier les champs obligatoires… Voici le code de la page traitement.php :
<?php
/* Récupération des informations du formulaire*/
if (get_magic_quotes_gpc())
{
 $nom = stripslashes(trim($_POST['nom']));
 $prenom = stripslashes(trim($_POST['prenom']));
 $dossier = stripslashes(trim($_POST['dossier']));    
 $societe = stripslashes(trim($_POST['societe']));
 $rcs = stripslashes(trim($_POST['rcs']));
 $code = stripslashes(trim($_POST['code']));
 $ville = stripslashes(trim($_POST['ville']));
 $telephone = stripslashes(trim($_POST['telephone']));
 $fax = stripslashes(trim($_POST['fax']));
 $mail = stripslashes(trim($_POST['mail']));
 $motif = stripslashes(trim($_POST['motif']));
 $message = stripslashes(trim($_POST['message']));
}     
else      
{
 $nom = trim($_POST['nom']);
 $prenom = trim($_POST['prenom']);
 $dossier = trim($_POST['dossier']);
 $societe = trim($_POST['societe']);
 $rcs = trim($_POST['rcs']);
 $adresse = trim($_POST['adresse']);
 $code = trim($_POST['code']);
 $ville = trim($_POST['ville']);
 $telephone = trim($_POST['telephone']);
 $fax = trim($_POST['fax']);
 $mail = trim($_POST['mail']);
 $motif = trim($_POST['motif']);
 $message = trim($_POST['message']);
}
/*Vérifie si l'adresse mail est au bon format */
 $regex_mail = '/^[-+.w]{1,64}@[-.w]{1,64}.[-.w]{2,6}$/i'; 
 /*Verifie qu il n y est pas d en tête dans les données*/
$regex_head = '/[nr]/';   
/*Vérifie qu il n y est pas d erreur dans adresse mail*/
 if (!preg_match($regex_mail, $mail))
 {
 $alert = 'L'adresse '.$mail.' n'est pas valide';      
 }
 else
{ 
 $courriel = 1;
}   
/* On affiche l'erreur s'il y en a une */ 
if (!empty($alert))
{
 $courriel = 0;
}     
/* On vérifie qu'il n'y a aucun header dans les champs */ 
if (preg_match($regex_head, $nom)
 || preg_match($regex_head, $prenom)
 || preg_match($regex_head, $dossier)
 || preg_match($regex_head, $societe)
 || preg_match($regex_head, $rcs)
 || preg_match($regex_head, $adresse)
 || preg_match($regex_head, $code)
 || preg_match($regex_head, $ville)
 || preg_match($regex_head, $telephone)
 || preg_match($regex_head, $fax)
 || preg_match($regex_head, $mail)
 || preg_match($regex_head, $motif)
 || preg_match($regex_head, $message))
{  
 $alert = 'En-têtes interdites dans les champs du formulaire'; 
}
else
{ 
 $header = 1;
}   
/* On affiche l'erreur s'il y en a une */ 
if (!empty($alert))
{
 $header = 0;
}
if (empty($telephone) 
 || empty($nom) 
 || empty($message))
{  
 $alert = 'Tous les champs doivent être renseignés';
} 
else
{  
 $renseigne = 1;
}   
/* On affiche l'erreur s'il y en a une */ 
if (!empty($alert))
{
 $renseigne = 0;
}
/* Si les variables sont bonne */
if ($renseigne == 1 AND $header == 1 AND $courriel == 1)
{
/*Envoi du mail*/

/*Le destinataire*/
$to="[email protected]";

/*Le sujet du message qui apparaitra*/
$sujet="Message depuis le site";
$msg = '';
/*Le message en lui même*/
/*$msg = 'Mail envoye depuis le site' "rnrn";*/
$msg .= 'Nom : '.$nom."rnrn";
$msg .= 'Prenom : '.$prenom."rnrn";
$msg .= 'Dossier : '.$dossier."rnrn";
$msg .= 'Societe : '.$societe."rnrn";
$msg .= 'RCS : '.$rcs."rnrn";
$msg .= 'Adresse : '.$adresse."rnrn";
$msg .= 'Code : '.$code."rnrn";
$msg .= 'Ville : '.$ville."rnrn";
$msg .= 'Telephone : '.$telephone."rnrn";
$msg .= 'Fax : '.$fax."rnrn";
$msg .= 'Mail : '.$mail."rnrn";
$msg .= 'Motif : '.$motif."rnrn";
$msg .= 'Message : '.$message."rnrn";
/*Les en-têtes du mail*/
$headers = 'From: MESSAGE DU SITE FAFA<demo@fafa-informatique>'."rn";
$headers .= "rn";
/*L'envoi du mail - Et page de redirection*/
mail($to, $sujet, $msg, $headers);
header('Location:http://www.fafa-informatique.com');
}
else
{
header('Location:http://www.fafa-informatique.com');
}
?>
Le mail [email protected] est fictif alors inutile de m’écrire dessus, vous pouvez mettre à la place celui sur lequel vous souhaitez recevoir les mails. Donc je mets les deux pages à la racine de mon site. Désormais un utilisateur peut utiliser le formulaire pour écrire à l’entreprise. Voilà l’exemple que vous recevrez dans votre boîte mail lorsqu’un utilisateur remplit le formulaire et l’envoi : AVERTISSEMENT : Parfois le mail peut mettre quelques minutes à arriver dans votre boîte mail donc pas d’affolement si vous le testez et qu’il n’est pas là au bout de deux secondes. (Je précise pour les gens pressés, prenez un café en attendant ).


Pour le paramétrage de la fonction mail dans un serveur Web local, ici sur Wamp : Je clique sur l’icône de Wamp, puis dans PHP. Je clique sur php.ini, un fichier s’ouvre. Dedans il faut rechercher les lignes SMTP et smtp_port et les paramétrer en fonction des serveurs SMTP de vos adresses mail. En faite, c’est un peu comme si vous paramétiez le SMTP Outlook.


  • A+
  • A-