Actualites | Forum |Archives
Le magazine des décideurs et webmasters qui gagnent !
Inscription | Livre d'or | Plan du site | 15 visiteurs actifs
   
A la Une
Actualité
Dossiers
Communiqués
Coin Technique
Agenda des salons
Emploi
Echange de liens

Archives
Sélection
Expérience qui parle
Internet quotidien
Tous les dossiers

Forum
Forum SAM-MAG

Guides
Check-list de la promotion des sites
Promouvoir et référencer les sites web

Contact
Nous contacter
Newsletter
La protection des données personnelles


 
  Envoyer le contenu d'un formulaire par e-mail
Dossier "SAM l'Informaticien" du 30 octobre au 12 nomvembre 2000 par Julie Meloni

et article est une adaptation/traduction de « Sending Form Data in E-Mail » (http://www.thickbook.com/extra/php_email.phtml) avec l'aimable autorisation de son auteur.

Envoyer le contenu d'un formulaire à une adresse donnée par e-mail est une chose extrêmement simple. La fonction mail() de PHP prend quatre arguments: le destinataire, le sujet, le message et des headers additionnels. Dans ce tutorial, vous allez apprendre à valoriser chacun de ces paramètres, à expédier le mail ainsi constituer et à afficher une page de confirmation. Nous allons utiliser un processus en deux étapes, une page pour le formulaire et une autre avec le code PHP qui traitera les données du formulaire et retournera la réponse.

NOTE: Nous utilisons l'extension .php, vous devez la modifier en accord avec votre serveur d'hébergement qui ne reconnait parfois que .php3. Dans certains cas la fonction mail() est désactivée, elle a été remplacée par une autre fonction - email() par exemple - mais qui a les mêmes paramètres. C'est pour mieux contrôler les envois et ainsi éviter le spam.

Formulaire

Nous allons écrire le formulaire suivant:
<HTML>
<HEAD>
<TITLE>E-Mail Form</TITLE>
</HEAD>
<BODY>

<FORM method="POST" action="do_sendform.php">
<P>Your Name:<br>
<INPUT type="text" name="sender_name" size=30>
</p>
<P>Your E-Mail Address:<br>
<INPUT type="text" name="sender_email" size=30>
</p>
<P>Message:<br>
<textarea name="message" cols=30 rows=5></textarea>
</p><INPUT type="submit" value="Send This Form">
</FORM>
</BODY>
</HTML>

Ce qui donne le formulaire suivant que l'on retrouve souvent :

Your Name:
Your E-Mail Address:
Message:

Regardons ce que nous venons d'écrire. Premièrement, l'action du formulaire est do_sendform.php. C'est le nom du fichier que nous allons écrire de suite, celui qui contiendra le code qui traitera les données du formulaire.Par défaut, le nom d'un élément de formulaire deviendra le nom de la variable passée à do_sendform.php , aussi quand le formulaire sera envoyé, nous allons transmettre trois variables: $sender_name, $sender_email et $message. Dans ce tutorial nous allons nous envoyer le message avec un sujet prédéfini, aussi le destinataire et le sujet vont être «en dur» dans le code PHP.

Le script

Si vous utilisez PHP3 et que vous n'avez pas de contrôle sur votre serveur ou si vous ne savez si "variable tracking" est on ajoutez cette ligne <?php_track_vars?> pour être sûr que, pour ce script au moins, "variable tracking" est on. (Cette option permet de récupérer effectivement les variables passées par un formulaire, c'est bien souvent le cas).

Maintenant, nous allons construie le message par concaténation des chaînes pour former une longue chaîne de message. C'est plutôt de l'assemblage en utilisant les caractères de nouvelle ligne: "\n" et de tabulation: "\t". Nous continuons le code PHP de la façon suivante:
<?php
$msg = "Sender Name:\t$sender_name\n";
Dans cette ligne, nous commençons le message en créant une variable appelé $msg et en l'initialisant par le texte "Sender Name", suivi d'une tabulation, suivi de la valeur de $sender_name puis du caractère de nouvelle ligne.

Continuons la création de notre message par:
$msg .= "Sender E-Mail:\t$sender_email\n";
$msg .= "Message:\t$message\n\n";


La dernière ligne contient deux caractères de nouvelle ligne pour ajouter des espaces en blanc à la fin de la chaîne.

A ce stade, nous avons demander à PHP de construire la longue chaîne suivante:
$msg = "Sender Name:\t$sender_name\nSender E-Mail:\t$sender_email\nMessage:\t$messsage\n\n";

Cependant, l'utilisation des opérateurs de concaténation et la séparation du code par des espaces en blanc le rend plus aisément modifiable ultèrieurement car vous n'aurez pas à chercher dans une longue chaîne de caractères..

Au début de ce tutorial, je vous ai dit que la fonction mail prenait quatre arguments. Nous allons maintenant créer les variables qui vont contenir les valeurs que vous maîtrisez à savoir le destinataire et le sujet:
$recipient = "you@youremail.com";
$subject = "Web Site Feedback";


Evidemment vous y mettez votre propre e-mail et le sujet que vous voulez.

Ensuite, créons une variable pour les "headers" additionnels. Les plus courants sont "From" et "Reply-To". Créons donc la variable appelée $mailheaders et ajoutons lui ceci:

$mailheaders = "From: My Web Site <> \n";
$mailheaders .= "Reply-To: $sender_email\n\n";


L'utilisation de "<>" dans le "From" header indique une adresse e-mail vide. nous pourrions y placer la variable $sender_email comme dans le "Reply-To" header, mais si l'utilisateur n'a pas complété le champ, le formulaire ne pourra pas être traité par le serveur de mail avec un header "From" vide. Il est donc plus judicieux de mettre une valeur générique et d'utiliser le champ "Reply-To" pour y mettre l'adresse de l'expéditeur le cas échéant.

Vosu avez maintenant tous les composants que la fonction mail() exige pour fonctionner correctement. Placez cecei dans votre code:
mail($recipient, $subject, $msg, $mailheaders);

Pour terminer

Vous devez renvoyer quelque chose sur l'écran de l'utilisateur pour lui signifier que son message a été envoyé. Sinon, vous savez bien que certains vont rester et appuyer sur "Send this form" environ un billion de fois pour finir par remplir votre boîte aux lettres. Ajoutez donc quelques lignes de HTML en fin de fichier et fermer le code PHP:

echo "<HTML><HEAD>";
echo "<TITLE>Form Sent!</TITLE></HEAD><BODY>";
echo "<H1 align=center>Thank You, $sender_name</H1>";
echo "<P align=center>";
echo "Your feedback has been sent.</P>";
echo "</BODY></HTML>";
?>


L'utilisation de $sender_name dans le contenu de ce qui est retourné à l'utilisateur, constitue un semblant de personnalisation.

Le script complet

Votre script entier doit ressembler à quelque chose comme ceci:

<?php


$msg = "Sender Name:\t$sender_name\n";
$msg .= "Sender E-Mail:\t$sender_email\n";
$msg .= "Message:\t$message\n\n";

$recipient = "you@youremail.com";
$subject = "Web Site Feedback";

$mailheaders = "From: My Web Site <> \n";
$mailheaders .= "Reply-To: $sender_email\n\n";

mail($recipient, $subject, $msg, $mailheaders);

echo "<HTML><HEAD>";
echo "<TITLE>Form Sent!</TITLE></HEAD><BODY>";
echo "<H1 align=center>Thank You, $sender_name</H1>";
echo "<P align=center>";
echo "Your feedback has been sent.</P>";
echo "</BODY></HTML>";

?>

La conclusion de l'auteur

Of course, feel free to substitute label names, spacing and any other items specific to your environment. As always, to learn more than just the basics, learn the PHP Manual and read the PHP Mailing List Archives!

Julie Meloni

Tech. Director, i2i Interactive
www.thickbook.com

Traduit par Daniel Lucazeau
@jornet.com
Chef de projet Internet

Tous droits réservés - Reproduction même partielle interdite sans autorisation préalable

 
 
Google
 
Web www.sam-mag.com
 

Copyright © ACORUS 2004. All Rights Reserved

- Sam-Mag.com Referencement-Sur-mesure - Referencer-Site-Web.com
Visibilite-Internationale.com - Referencement-Immobilier.net