Page 1 sur 1

Ajouter un champs sur un formulaire mail

Posté : 20 nov. 2008, 19:22
par mikka
Bonjour

Je souhaite modifier un formulaire mail dont je me sers sur un de mes sites dans le but d'ajouter des champs.
Celui ci fonctionne parfaitement avec les variables nom, email, sujet et messages.
Par contre impossible d'ajouter d'autres champs.
Le champs est bien présent sur ma page, une fois le mail envoyé un message me confirme l'envoi. Par contre le contenu de ce champs n'apparait pas dans le message reçu.

Code : Tout sélectionner

<?php /* ******************************************************************************************** CONFIGURATION ******************************************************************************************** */ // destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule $destinataire = "[email protected]"; // copie ? (envoie une copie au visiteur) $copie = "non"; // Messages de confirmation du mail $message_envoye = "Merci pour votre message "; $message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP."; // Messages d'erreur du formulaire $message_erreur_formulaire = "Vous devez d'abord <a href=\"contact.html\">envoyer le formulaire</a>."; $message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur."; /* ******************************************************************************************** FIN DE LA CONFIGURATION ******************************************************************************************** */ // on teste si le formulaire a été soumis if (!isset($_POST['envoi'])) { // formulaire non envoyé echo '<p>'.$message_erreur_formulaire.'</p>'."\n"; } else { /* * cette fonction sert à nettoyer et enregistrer un texte */ function Rec($text) { $text = trim($text); // delete white spaces after & before text if (1 === get_magic_quotes_gpc()) { $stripslashes = create_function('$txt', 'return stripslashes($txt);'); } else { $stripslashes = create_function('$txt', 'return $txt;'); } // magic quotes ? $text = $stripslashes($text); $text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well $text = nl2br($text); return $text; }; /* * Cette fonction sert à vérifier la syntaxe d'un email */ function IsEmail($email) { $pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$"; return (eregi($pattern,$email)) ? true : false; }; // formulaire envoyé, on récupère tous les champs. $nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : ''; $email = (isset($_POST['email'])) ? Rec($_POST['email']) : ''; $objet = (isset($_POST['objet'])) ? Rec($_POST['objet']) : ''; $message = (isset($_POST['message'])) ? Rec($_POST['message']) : ''; $test = (isset($_POST['test'])) ? Rec($_POST['test']) : ''; // On va vérifier les variables et l'email ... $email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré if (($nom != '') && ($email != '') && ($objet != '') && ($message != '') && ($test != '')) { // les 4 variables sont remplies, on génère puis envoie le mail $headers = 'From: '.$nom.' <'.$email.'>' . "\r\n"; // envoyer une copie au visiteur ? if ($copie == 'oui') { $cible = $destinataire.','.$email; } else { $cible = $destinataire; }; // Remplacement de certains caractères spéciaux $message = str_replace("'","'",$message); $message = str_replace("’","'",$message); $message = str_replace(""",'"',$message); $message = str_replace('<br>','',$message); $message = str_replace('<br />','',$message); $message = str_replace("<","<",$message); $message = str_replace(">",">",$message); $message = str_replace("&","&",$message); ?> <?php // Envoi du mail if (mail($cible, $objet, $message, $headers, $test)){ echo '<p><img src="form/ok.jpg" width="20" height="20" alt="DEVIS REFERENCEMENT" >'.$message_envoye.'</p>'."\n"; } else { echo '<p>'.$message_non_envoye.'</p>'."\n"; }; } else { // une des 3 variables (ou plus) est vide ... echo '<p>'.$message_formulaire_invalide.' <a href="http://www.site.fr">Retour au formulaire</a></p>'."\n"; }; }; // fin du if (!isset($_POST['envoi'])) ?> </p> <p><span class="pageinexistante"><a href="http://www.site.fr">Cliquez ici&nbsp;</a>pour revenir à l'accueil</span></p> <br /> </div> </div></div> </body> </html>

Posté : 20 nov. 2008, 19:27
par mikka
Dsl pour le flood, je n'avais pas fini mon message ...
Donc voila le code. Bien entendu l'adresse de reception à été modifiée pour l'occasion ;-)
Quelqu'un pourrait il m'éclairer svp ?
J'ai fais des centaines de test rien y fait.
Le champs concerné s'appel "test"
Merci d'avances

Posté : 20 nov. 2008, 19:54
par charabia
Consulte le fonctionnement de la fonction mail et tu comprendras mieux : http://www.vulgarisation-informatique.com/mail.php

Cette fonction prend au plus 4 arguments. Donc si tu veux envoyer par mail le contenu d'un nouveau champ, tu dois le concaténer dans le message et non pas faire un nouvel argument.

Sinon n'hésite pas à t'inscrire, tu pourras modifier toi-même tes messages et de les mettre en résolu dès que c'est ok ;)

Posté : 20 nov. 2008, 21:58
par mikka
Merci bcp pour cette réponse rapide.
Ce tuto est très instructif, merci !
J'ai compris que je dois l'inclure dans le message. Mais je n'arrive pas à comprendre si je dois le concaténer dans mon fichier html ou php

Posté : 20 nov. 2008, 22:06
par charabia
Tu peux concaténer toutes les valeurs récupérées dans une seule variable, par exemple $messagenvoi dans l'exemple :
$message = (isset($_POST['message'])) ? Rec($_POST['message']) : ''; 
$test    = (isset($_POST['test']))    ? Rec($_POST['test'])    : '';
$messageenvoi = $message."\n\n"; 
$messageenvoi .= $test;
Et dans le mail, utiliser cette variable :
if (mail($cible, $objet, $messageenvoi, $headers))