Accueil Boite à Outils Réaliser un formulaire de contact (4/4)

Publié le : 3 février 2004
Imprimer Imprimer cet article

Auteur :
Philippe Auriol

Philippe Auriol
Réaliser un formulaire de contact (4/4)
html, css, javascript, php

Le php est un langage de programmation libre et ouvert disponible sur toute plateforme informatique : macintosh, linux et windows. Son usage est extrêmement généralisé sur le web et nous allons voir qu’il n’est pas très compliqué de l’utiliser pour traiter un formulaire de contact.

Vous trembliez déjà à l’idée de devoir programmer ? Rassurez vous comme beaucoup de langages le php a un ensemble de fonctions qui vous prémâchent le travail. D’ailleurs si vous le souhaitez, un autre article vous propose un formulaire en php. Revenons au notre et commençons par le début.

La fonction mail en php

Le but du traitement du formulaire est d’en récupérer les données, de les mettre en forme et de vous les envoyer par courrier éléctronique sans que votre adresse email ne soit divulguée publiquement.

La fonction mail répond à ces critères (les références sur la fonction mail sont ici), elle prend en paramètres :

 $adresse : votre adresse email que vous allez inscrire uniquement dans cette page
 $sujet : que vous avez fait sélectionner par les champs à boutons radio de votre formulaire.
 $texte : qui est le contenu du textarea du formulaire.
 $from : qui est le champ dans lequel est indiqué l’adresse de l’expéditeur.

Nous avons donc toutes les données dans des variables sauf votre email.

Commençons donc ainsi le fichier traitement.php :


<?php
$adresse="monadresse@monfai.fr";
$from="$email";
mail($adresse, $sujet,$texte, $from);
?>

Trop facile hein ? Voilà que votre formulaire vous a envoyé un bel email de contact !

Bon, maintenant faisons mieux que ça.

Un champ from avec juste l’email, cela ne respecte pas les recommandations. C’est bête de s’en contenter puisque nous avons le nom et le prénom de l’envoyeur alors étoffons le champ from de la manière suivante :


<?php
$adresse="monadresse@monfai.fr";
$from=" $nom $prenom <$email>";
mail($adresse, $sujet,$texte, $from);
?>

Déjà, c’est plus propre. Ah oui, je sais que certains d’entre vous sont des fans du html dans le mail, si si ne vous cachez pas : on vous a vu.

Le html dans ce cas il faut le préciser dans le from ET le baliser dans le texte.


$adresse="monadresse@monfai.fr";
$from= "$nom $prenom <$email\r\n">;
$from.="MIME-Version: 1.0\r\n";
$from.="Content-Type: text/html";
$texte="<html>";
$texte.="$texte";
$texte.="</html>";
mail($adresse, $sujet,$texte, $from);

ceci signifie au lecteur de mail que c’est un savant mélange de texte et de html et que le protocole est le mime en version 1 et alors là vous pouvez maintenant rajouter tous les tags html que vous souhaitez des font des size des italiques etc.

Et maintenant ? On arrête de s’amuser ?

Presque. Après avoir joué avec notre boite de crayons de couleur et tout taggué en rose avec une image de fond en gif animé (non, c’est une blague). Nous pouvons désormais nous occuper de notre visiteur qui a rempli son formulaire : il remplit, il clique et...rien. C’est quand même un peu léger vous ne trouvez pas ?

Changeons tout ça :


<?php
$adresse="votreadresse@votrefai.com";
$from="From: $prenom $nom<$email>\r\n";
$from.="Reply-To: $prenom $nom <$email>\n";
$from.="X-priority:3\n";
$texte="<html>";
$texte.="$texte";
$texte.="</html>";
$from.="MIME-Version: 1.0\r\n";
$from.="Content-Type: text/html";  
if (mail($adresse,$sujet,$texte,$from))
echo("<center><font color=green><br><br><br><h2>Formulaire envoy&eacute; ! Je vous r&eacute;pondrais rapidement. Merci!</h2></font><br><a href=/>Cliquez ici pour revenir &agrave; l'accueil</a></center>");
else
echo("<center><font color=red><br><br><br><h2>Probl&egrave;me &agrave; l'envoi du mail...d&eacute;sol&eacute; nous ne pouvons actuellement traiter votre demande</h2></font><br>Contactez nous plus <a href="mailto:$adresse">classiquement</a>");
?>

Et voilà : on vérifie si la fonction mail avec ses paramètres a bien été exécutée et en fonction on envoie un message de confirmation...ou d’erreur !

Hack hack hack....

Eh oui les vilains hackeurs n’aiment pas nos sites : dès qu’ils le peuvent, comme les gosses qui taggent la maison juste peinte, ils defaced votre site pour vous montrer qu’ils sont "très forts"...

Gâchons leur le plaisir de défigurer notre site en évitant le cross scripting : prenez chacune de vos variables et appliquez leur la fonction htmlentities() qui transformera leurs tentatives d’intrusion de code en texte lisible et non interprétable.

Soit $texte=htmlentities($texte) ; $nom=htmlentities($nom) ; etc.

Et voilà, nous avons donc créé un formulaire, mis en forme ce formulaire, mis en place des contrôles dans celui-ci et nous venons d’achever le traitement de ce formulaire.

Il n’y a plus qu’à déposer nos deux fichiers formulaire.html et traitement.php dans le même répertoire de votre serveur web et c’est gagné.

Un dernier truc ?

Ce formulaire est autonome à une condition, dans la page formulaire.html, remplacez le action="traitement.php" par action="http://www.adressedevotresite.com/traitement.php" et lorsque la personne le validera, offline, son ordinateur tentera alors de se connecter pour vous envoyer les données. L’avantage c’est que vous pouvez alors réaliser des formulaires à distribuer ou à envoyer à des collègues et ne pas vous soucier du lieu où sera rempli le formulaire.

Alors bon formulaire et à bientôt.

Tiens : à ce propos, vous ne voudriez pas apprendre à stocker vos données dans un fichier texte ou une base mysql ?


Document joint à l'article

Traitement, le script

Cliquez ici pour réagir à cet article

Imprimer Imprimer cet article


Réactions à l'article :