Page 1 sur 1

Formulaire PHP

Posté : 04 mars 2011, 14:15
par pat'
Bonjours tout le monde,
J'utilise un formulaire pour inscire les membres d'un club à des compétitions. Le formulaire marche à merveille, cépendant j'voudrais savoir comment faire pour que la personne qui rempli ce formulaire reçoive la même chose (à titre de confirmation) que moi sur son adresse mail qu'elle a saisie dans le champ "email". Voici le code:

Code : Tout sélectionner

<?php $email_dest = "xxx"; if ($_POST['envoi']) { $message_remerciement = "Félicitation, votre inscription à bien été enregistrée. Cliquez sur la bannière du haut pour retourner à la page d'accueil"; // E-mail headers: $headers ="MIME-Version: 1.0 \n"; $headers .="xxx \n"; $headers .="Content-Type: text/html; charset=iso-8859-1 \n"; $subject = "Inscription à une course"; $partie_entete = "<html><head> <meta http-equiv=Content-Type content=text/html; charset=iso-8859-1> </head> <body bgcolor=#FFFFFF>"; for ($a=1; $a<= $_POST['nbre_champs_texte']; $a++) { $partie_champs_texte .= "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_champ'.$a] . " = " . $_POST['champ'.$a] . "</font><br>"; } if ($_POST['nbre_zone_email'] != 0) { $partie_zone_email = "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_email'] . " = " . $_POST['zone_email'] . "</font><br>"; } if ($_POST['nbre_zones_texte'] != 0) { $partie_zone_texte = "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_zone'] . " = " . $_POST['zone_texte'] . "</font><br>"; $partie_zone_texte = stripslashes($partie_zone_texte); } $fin = "</body></html>"; $sortie = $partie_entete . $partie_champs_texte . $partie_zone_email . $partie_zone_texte . $fin; // Send the e-mail if (@!mail($email_dest,$subject,$sortie,$headers)) { echo("Envoi du formulaire impossible"); } // Closing if !mail... } // Closing if edit ?><html> <head> <title>Inscription coursetitle> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <script language="JavaScript"><!-- Hide script from older browsers function verifSelection() {if (mail_form.champ1.value == "") { alert("Nom non rempli") return false } if (mail_form.champ2.value == "") { alert("Prénom non rempli") return false } if (mail_form.champ3.value == "") { alert("Discipline non rempli") return false } if (mail_form.champ4.value == "") { alert("choix de la course non rempli") return false } if (mail_form.zone_email.value == "") { alert("adresse mail non rempli") return false } invalidChars = " /:,;'" for (i=0; i<invalidChars.length; i++) { // does it contain any invalid characters? badChar = invalidChars.charAt(i) if (mail_form.zone_email.value.indexOf(badChar,0) > -1) { alert("Votre adresse e-mail contient des caractères invalides. Veuillez vérifier.") mail_form.zone_email.focus() return false } } atPos = mail_form.zone_email.value.indexOf("@",1) // there must be one "@" symbol if (atPos == -1) { alert('Votre adresse e-mail ne contient pas le signe "@". Veuillez vérifier.') mail_form.zone_email.focus() return false } if (mail_form.zone_email.value.indexOf("@",atPos+1) != -1) { // and only one "@" symbol alert('Il ne doit y avoir qu\'un signe "@". Veuillez vérifier.') mail_form.zone_email.focus() return false } periodPos = mail_form.zone_email.value.indexOf(".",atPos) if (periodPos == -1) { // and at least one "." after the "@" alert('Vous avez oublié le point "." après le signe "@". Veuillez vérifier.') mail_form.zone_email.focus() return false } if (periodPos+3 > mail_form.zone_email.value.length) { // must be at least 2 characters after the alert('Il doit y avoir au moins deux caractères après le signe ".". Veuillez vérifier.') mail_form.zone_email.focus() return false }} // Fin de la fonction </script> </head> <body> <form name="mail_form" method="post" action="<?=$PHP_SELF?>" onSubmit="return verifSelection()"> <div align="center"></div> <p align="center"> <?php if ($message_remerciement) { echo("<font face=Verdana size=2>"); echo(stripslashes($message_remerciement)); echo("</p></body></html>"); exit(); } ?> <table width="566" border="0" align="center"> <p align="center"> </p><tr> <td><font face="Verdana" size="2">Nom</font></td> <td><input name="champ1" type="text"></td> </tr><tr> <td><font face="Verdana" size="2">Prénom</font></td> <td><input name="champ2" type="text"></td> </tr><TR> <TD><font face="Verdana" size="2">Discipline</font></TD> <TD> <SELECT name="champ3" type="text"> <OPTION VALUE="20 pouces">20 pouces</option> <OPTION VALUE="24 pouces">24 pouces</option> <OPTION VALUE="20 et 24 pouces">20 et 24 pouces</option> </select></TD> <TR> <TD><font face="Verdana" size="2">Choix de la course</font></TD> <TD> <SELECT name="champ4" type="text"> <OPTION VALUE="Caen 26 et 27 février 2011">Caen 26 et 27 février 2011</option> <OPTION VALUE="Troyes 06 mars 2011">Troyes 06 mars 2011</option> <OPTION VALUE="Troyes 06 mars 2011 + open du samedi">Troyes 06 mars 2011 + open du samedi</option> <OPTION VALUE="Besançon 13 mars 2011">Besançon 13 mars 2011</option> <OPTION VALUE="Carpentras 19 et 20 mars 2011">Carpentras 19 et 20 mars 2011</option> <OPTION VALUE="Tavaux 27 mars 2011">tavaux 27 mars 2011</option> <OPTION VALUE="Compiègne 2 et 3 avril 2011">Compiègne 2 et 3 avril 2011</option> <OPTION VALUE="Cernay 10 avril 2011">Cernay 10 avril 2011</option> <OPTION VALUE="Mours 16 et 17 avril 2011">Mours 16 et 17 avril 2011</option> <OPTION VALUE="Weiterstadt 23 avril 2011">Weiterstadt 23 avril 2011</option> <OPTION VALUE="Bettancourt 24 avril 2011">Bettancourt 24 avril 2011</option> <OPTION VALUE="Joue les Tours 30 avril et 01 mai 2011">Joue les Tours 30 avril et 01 mai 2011</option> <OPTION VALUE="Prague 07 mai 2011">Prague 07 mai 2011</option> <OPTION VALUE="St-Avold 08 mai 2011">St-Avold 08 mai 2011</option> <OPTION VALUE="Chapelle St Mesmin 14 et 15 mai 2011">Chapelle St Mesmin 14 et 15 mai 2011</option> <OPTION VALUE="Marseille 21 et 22 mai 2011">Marseille 21 et 22 mai 2011</option> <OPTION VALUE="Messigny et Vantoux 29 mai 2011">Messigny et Vantoux 29 mai 2011</option> <OPTION VALUE="Saulon 02 juin 2011">Saulon 02 juin 2011</option> <OPTION VALUE="Winterthur 04 juin 2011">Winterthur 04 juin 2011</option> <OPTION VALUE="Dijon 05 juin 2011">Dijon 05 juin 2011</option> <OPTION VALUE="Beaune 11 et 12 juin 2011">Beaune 11 et 12 juin 2011</option> <OPTION VALUE="Birmingham 18 juin 2011">Birmingham 18 juin 2011</option> <OPTION VALUE="Vesoul 19 juin 2011">Vesoul 19 juin 2011</option> <OPTION VALUE="Saintes 25 et 26 juin 2011">Saintes 25 et 26 juin 2011</option> <OPTION VALUE="Mandeure 01, 02 et 03 juillet 2011">Mandeure 01, 02 et 03 juillet 2011</option> <OPTION VALUE="Haaksbergen 07,08,09 et 10 juillet 2011">Haaksbergen 07,08,09 et 10 juillet 2011</option> <OPTION VALUE="Copenhague 28,29,30 et 31 juillet 2011">Copenhague 28,29,30 et 31 juillet 2011</option> <OPTION VALUE="Troyes 11 septembre 2011">Troyes 11 septembre 2011</option> <OPTION VALUE="Bettancourt 25 septembre 2011">Bettancourt 25 septembre 2011</option> <OPTION VALUE="Couvrot 02 octobre 2011">Couvrot 02 octobre 2011</option> <OPTION VALUE="Cornimont 16 octobre 2011">Cornimont 16 octobre 2011</option> </SELECT> </TD> </TR> <tr> <td width><font face="Verdana" size="2">Adresse e-mail</font></td> <td width><input name="zone_email" type="text"></td> </tr><tr> <td valign="top"><input name="nbre_champs_texte" type="hidden" id="nbre_champs_texte" value="4"> <input name="nbre_zones_texte" type="hidden" value="0"> <input name="nbre_zone_email" type="hidden" value="1"> <input name="titre_champ1" type="hidden" value="Nom"><input name="titre_champ2" type="hidden" value="Prénom"><input name="titre_champ3" type="hidden" value="Discipline"><input name="titre_champ4" type="hidden" value="Choix de la course"><input name="titre_email" type="hidden" value="Adresse e-mail"></td> <td><div align="center"> <input type="reset" name="Reset" value="Effacer"> <input type="submit" name="envoi" value="Envoyer"> </div></td> </tr> </table> <div align="center"></div> </form> </body> </html></div>

Re: Formulaire PHP

Posté : 04 mars 2011, 15:13
par Mazarini
Bonjour,

Dans $email_dest, tu peux mettre 2 adresses séparées par un ;

Re: Formulaire PHP

Posté : 04 mars 2011, 15:14
par moogli
salut,

ajoute un champs dansle formumaire pour demander l'adresse mail de celui qui s'inscrit et ajoute la à la liste des destinataire, tu peut aussi mettre ton adresse en bcc afin qu'ils ne la voient pas.

pour info sur le sujet http://a-pellegrini.developpez.com/tutoriels/php/mail/

@+

Re: Formulaire PHP

Posté : 07 mars 2011, 21:33
par pat'
Salut, merci pour vos réponses, cependant ce n'est pas exactement ce que j'recherche. Je ne veux pas que le mail qui sert de confirmation soit envoyé toujours à la même personne, mais uniquement à la personne qui rempli le formualire. Le champ "e-mail" fait déja parti du formulaire, j'voudrais que le message soit envoyé à l'adresse saisie dans ce champ... J'sais pas si j'arrive à me faire comprendre... ^^' .

Re: Formulaire PHP

Posté : 07 mars 2011, 23:39
par Ryle
Quand tu fais
mail($email_dest,$subject,$sortie,$headers)
, tu envois un mail à l'adresse $email_dest

Si tu veux envoyer à l'utilisateur le même mail que celui que tu reçois, il te suffit de compléter la variable $email_dest qui contient ton adresse mail, pour rajouter celle de ton visiteur. (ou éventuellement inverser comme l'a suggéré moogli, mettre uniquement son adresse à lui en destinataire et mettre la tienne en copie cachée dans $headers :))

Si tu veux envoyer un mail différent à ton visiteur, il te faut rajouter un appel à la fonction mail() en précisant juste son adresse mail à lui et le contenu du mail que tu veux lui envoyer :)

Re: Formulaire PHP

Posté : 08 mars 2011, 12:55
par pat'
Salut Ryle! merci pour ta réponse, je sens qu'on s'approche :D , moi ce que je veux savoir c'est comment "faire comprendre au formulaire" qu'il doit utiliser l'adresse mail saisie (dans le champ e-mail) par celui qui s'inscrit?

Re: Formulaire PHP

Posté : 08 mars 2011, 22:14
par Ryle
Ton formulaire contient un champ nommé zone_email qui permet au visiteur de renseigner son adresse mail. Ton formulaire étant envoyé avec la méthode post, tu peux récupérer cette information avec la variable $_POST['zone_email'] :)

Il te suffit ensuite d'utiliser cette variable comme bon te semble, par exemple :
$email_dest .= ',' . $_POST['zone_email']; // compléter $email_dest avec cette nouvelle adresse 

Re: Formulaire PHP

Posté : 08 mars 2011, 22:14
par moogli

Re: Formulaire PHP

Posté : 09 mars 2011, 11:54
par pat'
Salut Ryle :D , donc si j'comprends bien (excuse moi j'suis débutant et j'avoue avoir un peu de mal avec ça :oops: ) je dois mettre

Code : Tout sélectionner

$email_dest .= ',' . $_POST['zone_email']; // compléter $email_dest avec cette nouvelle adresse ; "[email protected]" ;
C'est ça?

Re: Formulaire PHP

Posté : 09 mars 2011, 14:40
par Ryle
En fait, ce que tu dois obtenir pour que le mail vous soit envoyé à toi et à ton visiteur c'est :
mail ("[email protected], [email protected]", ....)
Il faut donc que tu arrives à constituer la chaine "[email protected], [email protected]", sachant que ta variable $email_dest contient déjà "[email protected]" (si tu l'as bien renseignée au début de ton script) et que "[email protected]" est disponible dans la variable $_POST['zone_email'] (s'il l'a renseignée dans le formulaire)

Il ne te reste plus qu'à glisser une virgule entre ces deux valeurs pour obtenir la chaine souhaitée : "[email protected], [email protected]" et la passé en paramètre de la fonction mail (tu peux le faire de différentes façon, à toi de voir celle qui te semble être la plus simple :))

Re: Formulaire PHP

Posté : 09 mars 2011, 15:32
par sadeq
Salut Ryle :D , donc si j'comprends bien (excuse moi j'suis débutant et j'avoue avoir un peu de mal avec ça :oops: ) je dois mettre

Code : Tout sélectionner

$email_dest .= ',' . $_POST['zone_email']; // compléter $email_dest avec cette nouvelle adresse ; "[email protected]" ;
C'est ça?
La correction est :
$email_dest = "[email protected]," . $_POST['zone_email']; //adresses email des destinataires (toi et l'utilisateur du formulaire) ; 

Re: Formulaire PHP

Posté : 09 mars 2011, 19:44
par pat'
C'est avec une grande joie que je vous annonce que j'ai enfin trouvé solution a mon problème, grâce à vous biensur :D . J'ai tout simplement fait de la manière suivante:

Code : Tout sélectionner

$email_dest .= '[email protected]' ; $email_dest .= ',' . $_POST['zone_email']; // compléter $email_dest avec cette nouvelle adresse
Et ça marche! :D :D
Merci à vous d'avoir pris le temps de m'aider. :D
@+