Créer une page de contact en PHP - Tutoriel pour Webmasters  

Accueil > Tutoriels pour Webmasters > Créer une page de contact en PHP

Créer une page de contact en PHP

Ce petit tutoriel permet de créer une page web de contact en PHP. Ajouté à un site web, les visiteurs pourront contacter le webmaster du site. Ce cours est facile à réaliser car tous les codes sont fournit et des explications sont fournissent. Ainsi, vous pouvez réussir à créer la page de contact en PHP, même si vous ne connaissez pas ce langage informatique.

Prérequis

Il faut savoir comment créer une page web en PHP pour pouvoir y intégrer les codes suivants. De plus, pour mieux comprendre ce qui suis, c'est mieux si vous connaissez un peu le XHTML et le PHP (mais pas indispensable si vous êtes débrouillard).

Quoi qu'il en soit, les tutoriels suivant peuvent aider si vous ne connaissez pas certain points abordés plus loin.

Définition des besoins

Cette petite partie définit ce qui va être créé tout au long de ce tutoriel. Les points ci-dessous permettent de stipuler les contraintes du formulaire de contact.

  • Demander le nom et prénom, l'email (pour pouvoir répondre à l'internaute après qu'il est envoyé le message) et le message en lui-même
  • Obliger à l'utilisateur de préciser son email et le message (le nom et le prénom étant facultatifs)
  • Vérifier que l'email ressemble à un email (pour éviter que l'internaute écrive n'importe quoi)

Créer le formulaire HTML

Le code ci-dessous est celui du formulaire en HTML. Il faut copier et coller l'ensemble de ce code source sur une nouvelle page web.

  1. span style="color: #ff0000;">"Content-Type" content="text/html; charset=iso-8859-1""post" action="<?php echo strip_tags($_SERVER['REQUEST_URI']); ?>">
  2. <p>Votre nom et prénom: <input type="text" name="nom" size="30""color:#ff0000;">*</span>: <input type="text" name="email" size="30" /></p>
  3. <p>Message <span style="color:#ff0000;">*</span>:</p>
  4. <textarea name="message" cols="60" rows="10"></textarea>
  5. <!-- Ici pourra être ajouté un captcha anti-spam (plus tard) -->
  6. <p><input type="submit" name="submit" value="Envoyer"

Si vous utilisez un logiciel particulier pour la création des pages web, ce qui importe le plus est le code compris entre &amp;amp;amp;lt;body&amp;amp;amp;gt; et &amp;amp;amp;lt;/body&amp;amp;amp;gt;.

Information: il y a un bout de code en PHP (celui situé entre &amp;amp;amp;lt;?php et ?&amp;amp;amp;gt;). Il stipule l'URL courante de la page. Il définit que l'adresse où le formulaire sera traité est l'adresse courante.

Créer le code PHP

L'utilisation seule du code XHTML permet uniquement d'afficher le formulaire. Mais il faut maintenant créer le code qui va récupérer les informations et les envoyer par email lorsque le visiteur cliquera sur le bouton "Envoyer".

Code simple

  1. span style="color: #808080; font-style: italic;">// S'il y des données de postées
  2. 'REQUEST_METHOD']=='POST') {
  3.  
  4. // (1) Code PHP pour traiter l'envoi de l'email
  5.  
  6. // Récupération des variables et sécurisation des données
  7. 'nom']); // htmlentities() convertit des caractères "spéciaux" en équivalent HTML
  8. 'email''message']);
  9.  
  10. // Variables concernant l'email
  11.  
  12. $destinataire = 'contact@example.com'; // Adresse email du webmaster (à personnaliser)
  13. $sujet = 'Titre du message'; // Titre de l'email
  14. $contenu = '<html><head><title>Titre du message</title></head><body>';
  15. $contenu .= '<p>Bonjour, vous avez reçu un message à partir de votre site web.</p>';
  16. $contenu .= '<p><strong>Nom</strong>: '.$nom.'</p>';
  17. $contenu .= '<p><strong>Email</strong>: ''</p>';
  18. $contenu .= '<p><strong>Message</strong>: '.$message.'</p>';
  19. $contenu .= '</body></html>'; // Contenu du message de l'email (en XHTML)
  20.  
  21. // Pour envoyer un email HTML, l'en-tête Content-type doit être défini
  22. 'MIME-Version: 1.0'."\r\n"'Content-type: text/html; charset=iso-8859-1'."\r\n";
  23.  
  24. // Envoyer l'email
  25. // Fonction principale qui envoi l'email
  26. '<h2>Message envoyé!</h2>'; // Afficher un message pour indiquer que le message a été envoyé
  27. // (2) Fin du code pour traiter l'envoi de l'email

Le code est suffisamment commenté pour être commenté une nouvelle fois.

Éviter les erreurs

Par défaut le programme précédent ne respecte pas le cahier des charges. Il faut ajouter du code pour éviter l'envoi de l'email si l'utilisateur à oublié d'indiquer le message ou un email valide. Le code ci-dessous reprend donc ce qui a déjà été fait et ajoute des éléments supplémentaires. Encore une fois, il y a de nombreux commentaires pour comprendre la signification du code.

  1. span style="color: #808080; font-style: italic;">// S'il y des données de postées
  2. 'REQUEST_METHOD']=='POST') {
  3. // Code PHP pour traiter l'envoi de l'email
  4.  
  5. $nombreErreur = 0; // Variable qui compte le nombre d'erreur
  6. // Définit toutes les erreurs possibles
  7. 'email'])) { // Si la variable "email" du formulaire n'existe pas (il y a un problème)
  8. $nombreErreur++; // On incrémente la variable qui compte les erreurs
  9. $erreur1 = '<p>Il y a un problème avec la variable "email".</p>'// Sinon, cela signifie que la variable existe (c'est normal)
  10. 'email'])) { // Si la variable est vide
  11. $nombreErreur++; // On incrémente la variable qui compte les erreurs
  12. $erreur2 = '<p>Vous avez oublié de donner votre email.</p>''email'// On incrémente la variable qui compte les erreurs
  13. $erreur3 = '<p>Cet email ne ressemble pas un email.</p>''message'])) {
  14. $nombreErreur++;
  15. $erreur4 = '<p>Il y a un problème avec la variable "message".</p>''message'])) {
  16. $nombreErreur++;
  17. $erreur5 = '<p>Vous avez oublié de donner un message.</p>';
  18. }
  19. } // (3) Ici, il sera possible d'ajouter plus tard un code pour vérifier un captcha anti-spam.
  20. // S'il n'y a pas d'erreur
  21. // Ici il faut ajouter tout le code pour envoyer l'email.
  22. // Dans le code présenté au chapitre précédent, cela signifie au code entre les commentaires (1) et (2).
  23. // S'il y a un moins une erreur
  24. '<div style="border:1px solid #ff0000; padding:5px;">''<p style="color:#ff0000;">Désolé, il y a eu '.$nombreErreur.' erreur(s). Voici le détail des erreurs:</p>''<p>'.$erreur1.'</p>''<p>'.$erreur2.'</p>''<p>'.$erreur3.'</p>''<p>'.$erreur4.'</p>''<p>'.$erreur5.'</p>';
  25. // (4) Ici, il sera possible d'ajouter un code d'erreur supplémentaire si un captcha anti-spam est erroné.
  26. '</div>'

Et voilà, avec ce nouveau code, il y aura des erreurs d'affichées si le visiteur oubli d'inscrire des informations là où c'est obligatoire et il y aura une erreur s'il entre une fausse adresse email. Vous pouvez copier/coller le code (en l'adaptant là où c'est demandé) pour vérifier soi-même la bonne conformité du code.

Mettre un captcha anti-spam simple

Le code créé jusqu'à présent est très pratique, mais il peut être exploité par des robots. Pour se protéger contre de telles utilisations il faut utiliser un captcha anti-spam. Il s'agit d'une protection que seuls les humains peuvent passer. Les robots feront normalement un erreur. Pour faire très simple, le formulaire va demander aux humains de répondre à une petite question qui sera: "Quel est le résultat de 1+3" (les humains devront répondre: 4).

Pour cela il faut ajouter ce champ au formulaire XHTML:

  1. <p>Combien font 1+3: <span style="color:#ff0000;">*</span>: <input type="text" name="captcha" size="2" /></p>
Enfin, il faut ajouter le code PHP qui va gérer cette nouvelle contrainte. Voici le code qui doit être ajouté au commentaire (3):
  1. span style="color: #ff0000;">'captcha'])) {
  2. $nombreErreur++;
  3. $erreur6 = '<p>Il y a un problème avec la variable "captcha".</p>''captcha']!=4) {
  4. // Vérifier que le résultat de l'équation est égal à 4
  5. $nombreErreur++;
  6. $erreur7 = '<p>Désolé, le captcha anti-spam est erroné.</p>'
Maintenant qu'une nouvelle contrainte est définit, il faut ajouter un code PHP à l'emplacement du commentaire (4) afin de spécifier le message à afficher pour les erreurs $erreur6 et $erreur7:
  1. span style="color: #ff0000;">'<p>'.$erreur6.'</p>''<p>'.$erreur7.'</p>'

Une fois mis en place, la page de contact sera améliorée d'une manière basique contre les robots de spam.

Télécharger la page de contact PHP

Pour simplifier tout ce qui a été dit, et au cas où vous n'avez pas compris où et comment ajouter les codes, vous pouvez télécharger le code de la page de contact. Ce fichier est au format texte, mais contient tout le code nécessaire. Il suffit de renommer la page en ".php" et de l'installer sur votre site pour pouvoir l'utiliser.