[RESOLU] formulaire contact avec choix du mail pour l'envoi

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] formulaire contact avec choix du mail pour l'envoi

Re: formulaire contact avec choix du mail pour l'envoi

par morea » 25 avr. 2014, 06:42

Bonjour, et merci beaucoup Netbdd, c'est super sympa.
Je vais regarder le code avec beaucoup d'attention.

Re: formulaire contact avec choix du mail pour l'envoi

par netbdd » 25 avr. 2014, 00:41

Bonsoir,

J'ai pris connaissance ce soir de votre question.

J'ai ajouté à votre code une sélection de mails avec cases à cocher, avec quelques commentaires pour un peu clarifier.

Bonne soirée.

Netbdd

Code : Tout sélectionner

<?php $cryptinstall="./crypt/cryptographp.fct.php"; include $cryptinstall; ?> <?php function affichForm($no,$pr,$ma,$erreurm,$te,$mess,$code) { $forma=' <form action="contact.php" method="post" name="f1" onsubmit="return verif()"> <p> <label for="nom">Nom</label> <input type="text" name="nom" id="nom" size="50" maxlength="50" value="'.$no.'" /> <label for="prenom">Prénom</label> <input type="text" name="prenom" id="prenom" size="50" maxlength="50" value="'.$pr.'" /> <label for="mail">E-mail</label> <input type="text" name="mail" id="mail" size="50" maxlength="50" value="'.$ma.'" />'.$erreurm.' <label for="tel">Tél. </label> <input type="text" name="tel" id="tel" size="50" maxlength="15" value="'.$te.'" /> <label for="mess">Message</label> <textarea name="mess" cols="50" rows="10" id="mess">'.$mess.'</textarea> <input type="checkbox" name="mails_auquel_envoyer[]" value="mail1">[email protected]<br /> <input type="checkbox" name="mails_auquel_envoyer[]" value="mail2">[email protected]<br /> <input type="checkbox" name="mails_auquel_envoyer[]" value="mail3">[email protected]<br /> '; --- --- if (verifmail($mail)) { //$adresse1 = "[email protected]"; $sujet = "Nouveau message transmis via le site de Toto" ; $corps = "Nouveau message transmis via mon site : \n \n"; $corps .= "Nom : $nom \n"; $corps .= "Prénom : $prenom \n"; $corps .= "Tél. : $telephone \n"; $corps .= "Mail : $mail \n \n"; $corps .= "Message : $message \n \n"; $entete = ""; //on vide la variable $entete = "MIME-Version: 1.0\n"; $entete = $entete."Content-type: text/plain; charset=utf-8\n"; $entete = $entete."From:[email protected] \n"; // Ici, vous récupérez la liste des valeurs de value correspondant aux mails transmis par votre formulaire // Exemple : si le premier et le troisième mails ont été cochés, cette variable sera un tableau contenant 'mail1' et 'mail3' $listeMails = $_POST['mails_auquel_envoyer']; // Si aucune case n'a été cochée if (empty($listeMails)) { echo "Vous n'avez choisi aucun mail."; }* else { // Nombre de mails sélectionnés $nbMails = count($listeMails); $listeDestinataires = ""; for($i=0; $i < $nbMails; $i++) { if ($listeDestinataires == "") { if ($listeMails[$i] == "mail1") { $listeDestinataires .= "[email protected]"; } elseif ($listeMails[$i] == "mail2") { $listeDestinataires .= "[email protected]"; } elseif ($listeMails[$i] == "mail3") { $listeDestinataires .= "[email protected]"; } } else { if ($listeMails[$i] == "mail1") { $listeDestinataires .= ", [email protected]"; } elseif ($listeMails[$i] == "mail2") { $listeDestinataires .= ", [email protected]"; } elseif ($listeMails[$i] == "mail3") { $listeDestinataires .= ", [email protected]"; } } } mail($listeDestinataires,$sujet,$corps,$entete); } else { ?> <?php } } ?>

Re: formulaire contact avec choix du mail pour l'envoi

par morea » 24 avr. 2014, 19:30

Bonsoir et merci pour ta réponse. J'avoue, je sais pas trop comment faire. En tout cas, c'est super, cela semble possible, c'est déjà ça.
En fait, j'avais réalisé ce formulaire en cours de PHP il y a trois ans, et depuis je m'en sers sans soucis mais sans trop le comprendre. Peux-tu m'aider un tout petit peu plus ?
Je vais en attendant aller regarder du côté de la doc PHP....
bonne soirée.

Re: formulaire contact avec choix du mail pour l'envoi

par 0vordhosbn00 » 24 avr. 2014, 15:11

Saloute,

Le premier paramètre de la fonction "mail" de php est le ou les destinataires.

Donc si les destinataires potentiels sont des cases à cocher, il suffit de vérifier si une case parmi la liste est cochée, et ensuite les vérifier une par une pour les ajouter au mail.

Comme expliqué dans la doc php, tu peux mettre plusieurs destinataire à ton mail en les séparant par des virgules.

J'espère t'avoir aidé un peu, ciao

formulaire contact avec choix du mail pour l'envoi

par morea » 24 avr. 2014, 13:55

Bonjour,
Je suis débutante en PHP et je réalise actuellement un site sur lequel j'ai créé un formulaire contact en PHP. Le client souhaiterai donner à l'internaute la possibilité de choisir à qui il veut envoyer son formulaire : soit sur un menu déroulant inclus dans le formulaire, soit avec des cases à cocher avec le choix des destinataires possibles.
Je ne vois vraiment pas comment je peux intégrer dans mon code PHP cette possibilité. Mon code est ci-dessous.
J'espère que je suis claire. En tout cas merci par avance si quelqu'un sur ce forum peut me donner un petit coup de main.

Code : Tout sélectionner

<?php $cryptinstall="./crypt/cryptographp.fct.php"; include $cryptinstall; ?> <?php function affichForm($no,$pr,$ma,$erreurm,$te,$mess,$code) { $forma=' <form action="contact.php" method="post" name="f1" onsubmit="return verif()"> <p> <label for="nom">Nom</label> <input type="text" name="nom" id="nom" size="50" maxlength="50" value="'.$no.'" /> <br /> <label for="prenom">Prénom</label> <input type="text" name="prenom" id="prenom" size="50" maxlength="50" value="'.$pr.'" /> <br /> <label for="mail">E-mail</label> <input type="text" name="mail" id="mail" size="50" maxlength="50" value="'.$ma.'" />'.$erreurm.' <br /> <label for="tel">Tél. </label> <input type="text" name="tel" id="tel" size="50" maxlength="15" value="'.$te.'" /> <br /> <label for="mess">Message</label><br /> <textarea name="mess" cols="50" rows="10" id="mess">'.$mess.'</textarea> <br />'; $forma2 = ' <label for="code" id="codecrypt">Recopier le code </label><input type="text" name="code" id="code" size="20" value="'.$code.'"/> <br /><br /> <button type="submit" name="valider" value="ENVOYER">ENVOYER</button></p> </form>'; echo $forma; dsp_crypt(0,1); echo $forma2; } ?> <script type="text/javascript"> function verif() { //***********NOM*********** var nom=document.forms["f1"].elements["nom"].value; if (nom=="") { window.alert("Vous n'avez pas saisi votre Nom"); document.forms["f1"].elements["nom"].focus(); return false; } //***********PRENOM*********** var prenom=document.forms["f1"].elements["prenom"].value; if (prenom=="") { window.alert("Vous n'avez pas saisi votre Prénom"); document.forms["f1"].elements["prenom"].focus(); return false; } var code=document.forms["f1"].elements["code"].value; if (code=="") { window.alert("Vous n'avez pas saisi le bon code"); document.forms["f1"].elements["code"].focus(); return false; } //***********MAIL*********** var mail=document.forms["f1"].elements["mail"].value; var objReg=new RegExp(/^[a-zA-Z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$/g); var resu=objReg.test(mail); if (resu==false) { window.alert("Votre e-mail n'est pas valide"); document.forms["f1"].elements["mail"].focus(); return false; } //***********TEL*********** var telephone=document.forms["f1"].elements["tel"].value; if (telephone=="") { window.alert("Vous n'avez pas saisi votre numéro de téléphone"); document.forms["f1"].elements["tel"].focus(); return false; } var telReg=new RegExp(/^(01|02|03|04|05|06|07|08|09)[0-9]{8}$/gi); var resul=telReg.test(telephone); if (telephone!="") { if (resul==false) { window.alert("Votre numéro de téléphone n'est pas valide (il doit posséder 10 chiffres sans espaces)"); document.forms["f1"].elements["tel"].focus(); return false; } } //***********MESSAGE*********** var mess=document.forms["f1"].elements["mess"].value; if(mess.length==0) { window.alert("Vous n'avez pas saisi de message"); document.forms["f1"].elements["mess"].focus(); return false; } return true; } </script> <?php function verifmail($email) { $expression="/^(\w+(([\.\-\_]?\w+)+)?)\@((\w+[\.\-\_])+[a-zA-Z]{2,4})/"; if (preg_match($expression,$email)) { return true; } else { return false; } } ?> <?php if (isset($_POST['nom']) && isset($_POST['prenom']) && isset($_POST['mail']) && isset($_POST['tel']) && isset($_POST['mess']) ) { $nom = strtoupper($_POST['nom']); $prenom = ucfirst($_POST['prenom']); $telephone = $_POST['tel']; $mail = $_POST['mail']; $message = $_POST['mess']; $code="saisir le bon code"; if ($nom=="" || $prenom=="" || $mail=="" || $message=="" || chk_crypt($_POST['code'])==false ) { affichForm($nom,$prenom,$mail,"",$telephone,$message,$code); } else { $nom = strtoupper($_POST['nom']); $prenom = ucfirst($_POST['prenom']); $telephone = $_POST['tel']; $mail = $_POST['mail']; $message = $_POST['mess']; if (verifmail($mail)) { $adresse1 = "[email protected]"; $sujet = "Nouveau message transmis via le site de Toto" ; $corps = "Nouveau message transmis via mon site : \n \n"; $corps .= "Nom : $nom \n"; $corps .= "Prénom : $prenom \n"; $corps .= "Tél. : $telephone \n"; $corps .= "Mail : $mail \n \n"; $corps .= "Message : $message \n \n"; $entete = ""; //on vide la variable $entete = "MIME-Version: 1.0\n"; $entete = $entete."Content-type: text/plain; charset=utf-8\n"; $entete = $entete."From:[email protected] \n"; if (mail($adresse1,$sujet,$corps,$entete)) { ?> <?php } else { ?> <?php } } else { affichForm($nom,$prenom,$mail," <b>invalide</b>",$telephone,$message); } } } else { affichForm("","","","","","",""); } ?>