Formulaire de contact par Mail
Informations sur le tutorial
hello,
le tutos suivant va
essayer de vous apprendre a créer un formulaire de contact qui envoi le résultat par mail
le cours va se diviser en 4 parties :
- 1° le formulaire
- 2° Réception et traitement du formulaire
- 3° Envoi du formulaire
- 4° Code final
Le script que je vais vous présenter tien sur une seul page que l'on nommera... hum... contact.php

(ouai je sait c'est très original

).
Allez on va commencer le cours ...
1° Le formulaire
Le formulaire va se composer de :
-> Deux cases dans lequel on mettra l'adresse du posteur et le titre du message .
-> D'une zone de texte dans lequel on mettra le message
-> D'un bouton envoyer
Voila un exemple de se que vous pouvez faire :
Code (x)HTLM:<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
<blockquote>
<p>
<label for="email_expediteur"> Votre adresse e-mail (obligatoire):</label>
<br />
<input name="email_expediteur" type="text" class="minuscule" id="email_expediteur" size="40" />
</p>
<p>
<label for="titre">Titre de message (facultatif):</label>
<br />
<input type="text" size="40" name="titre" id="titre"/>
</p>
<p>
<label for="message">Message (obligatoire):</label>
<br />
<textarea name="message" id="message" cols="30" rows="7">
</textarea>
</p>
</blockquote>
<br />
<p><input type="submit" name="envoyer" value="Envoyer" />
</p>
</form>
Voila sa c'est fait, on va pouvoir passez aux chose serieuse
2° Réception et traitement du Formulaire
Une fois le formulaire rempli il va falloir le receptionner et le traiter avant de l'envoyer.
Il va falloir entre autres vérifier que tout les champs sont remplis et que l'email de l'envoyeur est valide.
On va donc utiliser le script suivant pour vérifier la validiter du formulaire :
Code PHP:
<?php
if (isset($_POST["envoyer"])){
// le formulaire a été soumis
$etat = "erreur";
// Valeur par défaut. Prendra la valeur "ok" s'il n'y a pas d'erreur
// mise en forme des champs saisis dans le formulaire lors de sa soumission
if (isset($_POST["email_expediteur"])) {
$_POST["email_expediteur"]=trim(stripslashes($_POST["email_expediteur"]));
}
if (isset($_POST["titre"])) {
$_POST["titre"]=trim(stripslashes($_POST["titre"]));
}
if (isset($_POST["message"])) {
$_POST["message"]=trim(stripslashes($_POST["message"]));
}
// test de la validité des champs saisis
if (empty($_POST["email_expediteur"])) {
// il manque l'email de l'expéditeur
$erreur="Saisissez votre adresse email...";
}
elseif (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*.[a-z]{2,3}$",$_POST["email_expediteur"])){
// l'adresse e-mail n'est pas valide
$erreur="Votre adresse e-mail n'est pas valide...";
}
elseif (empty($_POST["message"])) {
// le message est vide
$erreur="Saisissez un message...";
}
else {
// tous les champs sont correctement remplis: on pourra envoyer le mail
$etat="ok";
}
}
else {
// le formulaire n'a pas été soumis
$etat="attente";
}
// === fin de traitement des données du formulaire =======================================================
?>
Le formulaire est maintenant valide .
Reste plus qu'à l'envoyer .
3° Envoi du Formulaire
On arrive donc dans la derniere partie du cours c'est une des plus importantes, c'est la ou l'on va veritablement utiliser la puissance de php avec sa fonction MAIL.
On va commencer par créer la variable
$email_webmaster qui va contenir l'email du recepteur on va donc mettre ceci en début de script :
Code PHP:$email_webmaster = "votremail@CP.com";
Maintenant que c'est fait on va envoyer le mail pour cela on va utiliser la variable
$etat que l'on avait initialiser plus haut
Elle pouvait avoir trois valeur :
=> erreur (par défaut)
=> Attente
=> ok
On va l'utiliser pour afficher soit que le message a était envoyer soit qu'il y'a une erreur et donc afficher cette erreur
Code PHP:<?php
if ($etat!="ok"){// le formulaire n'a pas été soumis, ou soumis avec une erreur
if ($etat=="erreur"){
//le formulaire a été soumis avec une erreur
echo "<p><strong>".$erreur."</strong></p>n";
// afficher le message d'erreur
}
}
else {
// le formulaire a été soumis sans erreur, on envoie le mail
$entete = "From: ".$_POST["email_expediteur"]." <".$_POST["email_expediteur"].">n";
$entete .= "MIME-Version: 1.0";
if (@mail($email_webmaster,$_POST["titre"],$_POST["message"],$entete)){
// mail envoyé
echo "Votre message a été envoyé.<br />n";
echo "<a href="".$_SERVER["PHP_SELF"]."">Envoyer un autre message...</a><br /><br /><br /><br /><br /><br /><br /><br /><br />n";
}
else {
// erreur lors de l'envoi du mail
echo "Un problème s'est produit lors de l'envoi du message.n";
echo "<a href="".$_SERVER["PHP_SELF"]."">Réessayez...</a><br /><br /><br /><br /><br /><br /><br /><br /><br />n";
}
}
?>
Et voila qui est fait
Soit le mail est envoyé sans encombre, le script affiche :
Citation: Script
Votre message a été envoyé
Soit une erreur connu a était detecté, le script affiche l'erreur
Ou enfin une erreur inconnu a était détecté, le script affiche :
Citation: Script
Un problème s'est produit lors de l'envoi du message.
4° Le Code Final
Code PHP:<?php
$email_webmaster = "votremail@CP.com";//// indiquer votre adresse email /////
// === traitement des données du formulaire ============================================================
if (isset($_POST["envoyer"])){
// le formulaire a été soumis
$etat = "erreur";
// Valeur par défaut. Prendra la valeur "ok" s'il n'y a pas d'erreur
// mise en forme des champs saisis dans le formulaire lors de sa soumission
if (isset($_POST["email_expediteur"])) {
$_POST["email_expediteur"]=trim(stripslashes($_POST["email_expediteur"]));
}
if (isset($_POST["titre"])) {
$_POST["titre"]=trim(stripslashes($_POST["titre"]));
}
if (isset($_POST["message"])) {
$_POST["message"]=trim(stripslashes($_POST["message"]));
}
// test de la validité des champs saisis
if (empty($_POST["email_expediteur"])) {
// il manque l'email de l'expéditeur
$erreur="Saisissez votre adresse email...";
}
elseif (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*.[a-z]{2,3}$",$_POST["email_expediteur"])){
// l'adresse e-mail n'est pas valide
$erreur="Votre adresse e-mail n'est pas valide...";
}
elseif (empty($_POST["message"])) {
// le message est vide
$erreur="Saisissez un message...";
}
else {
// tous les champs sont correctement remplis: on pourra envoyer le mail
$etat="ok";
}
}
else {
// le formulaire n'a pas été soumis
$etat="attente";
}
// === fin de traitement des données du formulaire =======================================================
if ($etat!="ok"){// le formulaire n'a pas été soumis, ou soumis avec une erreur
if ($etat=="erreur"){
//le formulaire a été soumis avec une erreur
echo "<p><strong>".$erreur."</strong></p>n";
// afficher le message d'erreur
}
?>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
<blockquote>
<p>
<label for="email_expediteur"> Votre adresse e-mail (obligatoire):</label>
<br />
<input name="email_expediteur" type="text" class="minuscule" id="email_expediteur" value="<?php
if (!empty($_POST["email_expediteur"])) {
// l'adresse email de l'expéditeur a été saisie: la réafficher
echo htmlspecialchars($_POST["email_expediteur"],ENT_QUOTES);
}
?>" size="40" />
</p>
<p>
<label for="titre">Titre de message (facultatif):</label>
<br />
<input type="text" size="40" name="titre" id="titre" value="<?php
if (!empty($_POST["titre"])) {
// le titre du message a été saisi: le réafficher
echo htmlspecialchars($_POST["titre"],ENT_QUOTES);
}
?>" />
</p>
<p>
<label for="message">Message (obligatoire):</label>
<br />
<textarea name="message" id="message" cols="30" rows="7"><?php
if (isset($_POST["message"])) {
// le message a été saisi: le réafficher
echo htmlspecialchars($_POST["message"],ENT_QUOTES);
}
?>
</textarea>
</p>
</blockquote>
<br />
<p><input type="submit" name="envoyer" value="Envoyer" />
</p>
</form>
<?php
}
else {
// le formulaire a été soumis sans erreur, on envoie le mail
$entete = "From: ".$_POST["email_expediteur"]." <".$_POST["email_expediteur"].">n";
$entete .= "MIME-Version: 1.0";
if (@mail($email_webmaster,$_POST["titre"],$_POST["message"],$entete)){
// mail envoyé
echo "Votre message a été envoyé.<br />n";
echo "<a href="".$_SERVER["PHP_SELF"]."">Envoyer un autre message...</a><br /><br /><br /><br /><br /><br /><br /><br /><br />n";
}
else {
// erreur lors de l'envoi du mail
echo "Un problème s'est produit lors de l'envoi du message.n";
echo "<a href="".$_SERVER["PHP_SELF"]."">Réessayez...</a><br /><br /><br /><br /><br /><br /><br /><br /><br />n";
}
}
?>
Information
Vous remarquerez que j'ai ajouter du PHP dans le formulaire cela permet que lorsqu'il y'a une erreur pendant l'envoi les infos que vous aviez tapé se réaffiche. sa peux servir
Voila c'était mon premier tutorial j'éspere avoir bien commenter le code et le cours, j'éspere aussi qu'il vous a plu
Ah et aussi désolé si il y'a des fautes j'ai essayé de m'appliquer
Pour tester le script, il est dispo
ici
6 commentaires
|
> Posté le : 28/06/2007 à 20h53 | Note :  |

Groupe : Membres
|
Grr, tu fais de la concurence avec mon tutorial Non je plaisante ! Très bon tuto ! |
|
> Posté le : 17/07/2007 à 14h23 | Note :  |

Groupe : Admins
|
Oui très bon tutorial |
|
> Posté le : 22/07/2007 à 13h08 | Note : Aucune |

Groupe : Membres
|
Merci |
|
> Posté le : 07/06/2008 à 14h25 | Note :  |

Groupe : Membres
|
super Chuck Norris peut te faire passer un sale quart d'heure en 8 minutes.
L'infographie bien plus qu'une passion ...
|
|
> Posté le : 18/07/2008 à 03h59 | Note : Aucune |

Groupe : Membres
|
Bonjour! Tres beau tuto mais j'ai des questions...
Citation: ?php echo $_SERVER["PHP_SELF"]; ?
Pourquoi dans le formulaire il y a cela.. Le formulaire est pas supposé retourner une page? J'essaie d'inclure le code a mon site mais je n'y arrive pas...
Le code final écris dans le tutoriel doit être mis sur 1 page? Ou il y a une page séparé pour le formulaire et la validation? |
|
> Posté le : 27/07/2008 à 06h53 | Note :  |

Groupe : Membres
|
Super tutoriel!! je l,ai utilisé sur mon site! Et en plus, j'ai compris
J'ai supprimé les n qui s'affiche dans les echo de la fin.. je n'ai pas trop compris pourquoi c'étais là d'ailleur..
Merci !! |