Traitement de formulaire en PHP avec KompoZer

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 01/09/2016 Test dans /info ...