Traitement de formulaire en PHP avec KompoZer

pdfCette page en PDF

L'envoi du courrier électronique

Les deux pages précédentes de la leçon avaient pour simple but de vérifier que les données sont passées correctement à la page web envoi.php.

Nous allons maintenant passer au but de la leçon: l'envoi d'un courrier électronique avec toutes ces données. Il n'y a plus aucune difficulté.

L'envoi du courrier électronique par la page envoi.php repose sur la fonction PHP mail().  
Celle-ci réclame plusieurs arguments. Dans l'ordre:

Le code PHP peut être complété assez simplement.


  • Double-clic sur le marqueur PHP dans la page « envoi.php ».
  • Compléter le script de la manière en ajoutant au texte précédent:
$message = $np."\n";
$message .= "J'ai aimé $sonde \n";
$message .= "Affiliation: $mbr \n";
mail ("vous@votreFAI.com", "Sondage", $message, "From: $np");
echo "Votre avis vient de m'&ecirc;tre envoy&eacute; <br />";
  • Enregistrer la page envoi.php

Oh! Veuillez m'excuser. Je crois que vous avez commis une petite faute de frappe dans le code. Vous avez écrit, par deux fois, $messages .= "bla bla bla". Mais je vous pardonne volontiers ce petit "." en trop devant le signe "=".

Il n'y a rien à pardonner. Ce n'est pas une faute de frappe. L'explication suit...

En PHP, l'opérateur "=" indique qu'il faut transférer un certain contenu dans une variable. L'ancien contenu est alors définitivement perdu.

L'opérateur ".=" signifie qu'il faut ajouter un nouveau contenu à celui qui existait déjà. L'ancien contenu est toujours présent après l'opération.

L'opérateur ".=" ne fonctionne qu'avec les chaînes de caractères.

Trois étapes dans le script PHP:

  1. On fabrique une variable $message qui reçoit les différentes données du formulaire. Chaque ligne est terminée par \n qui correspond à un passage à la ligne.
  2. le courrier électronique est envoyé à l'adresse indiquée, avec l'objet Sondage et le texte contenu dans la variable $message; le nom de l'expéditeur est précisé à la fin.
  3. Un avis d'envoi est écrit dans la page web.

Le texte final du script PHP est donc:


$np = htmlentities($_POST['nomPrenom']);
$sonde = $_POST['sondage'];
if (isset($_POST['membre']))
$mbr = $_POST['membre'];
else
$mbr = "Je ne suis pas membre";
echo "Votre nom est $np <br />";
echo "Vous avez aim&eacute $sonde <br />";
echo "Affiliation: $mbr<br />";
mail ("vous@votreFAI.com", "Sondage", $message, "From: $np");
echo "Votre avis vient de m'&ecirc;tre envoy&eacute; <br />";
  • Renvoyer la page envoi.php complétée sur le serveur.
  • Retourner sur la page du formulaire avec le navigateur.
  • Remplir les différents champs, envoyer le formulaire et attendre l'arrivée du courrier électronique.

Attention, danger !

La fonction mail(), telle qu'elle est utilisée ci-dessus n'est pas sans présenter des problèmes potentiels.

Des spammeurs peuvent utiliser la page « envoi.php » à des fins malveillantes.

La méthode utilisée (et les remèdes possibles) est exposée à l'adresse http://www.phpsecure.info/v2/article/MailHeadersInject.php.

Dans le cas présent, à chaque utilisation illicite de la page envoi.php, un courrier électronique  serait envoyé à l'adresse indiquée dans le texte même de la fonction: vous@votreFAI.com.

Quand tu as vérifié que l'envoi de données du formulaire fonctionne dans tous les cas, passe à la page suivante.Vers la page suivante Page suivante


Dernière modification 28/03/2009