Créer un formulaire de contact en php

Nous allons d’abord créer un formulaire en HTML puis nous allons créer une page PHP pour le traitement et l’export des données du formulaire. Je l’ai créé lorsque je souhaitais faire un 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 ma base de données mais la fonction mail de PHP.

Créer un formulaire de contact en php
Créer un formulaire de contact en php

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 : <form action= »traitement.php » method= »post »> 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="demo@fafa-informatique.com";

/*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 demo@fafa-informtique.com 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 ).

Message formulaire PHP

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.

Paramétrage de Wamp

Autres articles sur les scripts en PHP

Le langage PHP est un très complet et il permet de nombreuses possibilités de création. Vous trouverez ainsi plusieurs présentations de scripts. Voici une petite liste ci-dessous :

Articles en relation

6 commentaires

  1. debutant en php, j’ai analyse attentivement le fichier traitement.php. Merci bcp, ca m’a bien aide. J’aurais une question concernant la fin du code avec mail() et la boucle suivante. Vous affichez la page html, ce qui est logique (j’ai teste avec echo et on a une nouvelle page blanche avec le texte de echo). Mais voulant egalement afficher en plus un message prevenant l’utilisateur que son envoi a bien (ou pas) ete effectue, j’ai donc rajouter l’instruction « echo « alert(‘xxxx’) »; apres le header, mais cela ne fonctionne pas. Par contre si l’instruction « echo » est seule (j’enleve « header »), j’ai bien mon message d’alert sur une page blanche. Je ne cromprends pas pourquoi les 2 instructions ne fonctionnent pas ensemble? Comment faire pour egalement afficher ce message de confirmation pour l’utiliisateur (c’est quand meme important de le prevenir!!)
    Merci d’avance. Frederic

    1. Bonjour Frédéric,

      En fait, les deux URL en bas du formulaire permettent de rediriger selon que le message soit envoyé ou non, autrement dit, si le message est bien envoyé il suffit d’indiquer la page de redirection indiquant que le message est envoyé, sinon après le Else il suffit d’indiquer une page contenant un message d’erreur, donc il suffit de créer deux pages selon le résultat de l’envoi du mail.

  2. Hello,

    Merci pour ce tuto, néanmoins j’ai cette erreur de syntaxe « Parse error: syntax error, unexpected T_STRING in …  » sur cette ligne : $alert = ‘L’adresse ‘.$mail.’ n’est pas valide’;
    et je ne sais pas d’où ça peut venir…

    Merci de votre aide !

  3. Salut et merci bien mon frere, svp j’ai beaucoup aimé la maniere donc vous avez expliqué ce tutos mais permet de vous dire mon mail ne part pas, et je me demande pourquoi cas je suis en local sur easyphp.
    merci pour votre comprehension

  4. Merci pour ce tuto, néanmoins j’ai cette erreur de syntaxe « Parse error: syntax error, unexpected T_STRING in … » sur cette ligne : $alert = ‘L’adresse ‘.$mail.’ n’est pas valide’;
    et je ne sais pas d’où ça peut venir…

    Merci de votre aide !

    1. Bonjour,

      Compliqué de répondre comme cela, il faut le code complet, je serais vous j’irais sur un forum de développeur comme openclassroom, en mettant le code complet dans un topic le soucis sera rapidement trouvé,

      Bon courage,

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Fondateur

INSCRIVEZ-VOUS

Découvrez des astuces et conseils pour transformer votre site en réussite.

Merci. Vous allez recevoir un e-mail pour confirmer votre inscription. A très vite, Fabien

Pin It on Pinterest

Share This