Formulaire de contact, mettre expéditeur en reponse

Discussion dans 'Demandes d'avis et de conseils sur vos sites' créé par kcnarfy, 21 Octobre 2016.

  1. kcnarfy
    kcnarfy Nouveau WRInaute
    Inscrit:
    29 Septembre 2008
    Messages:
    4
    J'aime reçus:
    0
    Bonjour
    Si quelqu'un peut m'aider, j'ai un site web avec un formulaire de contact qui fonctionne; cependant, quand je fais "repondre" au mail que je recois, le destinataire c'est mon mail; or il faudrait que ce soit celui rempli dans le champ "votre adresse email" par le visiteur... Sauriez vous quoi modifier ou rajouter pour cela? Merci beaucoup
    Mon code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <?php $email_dest = "Franck <contact@monsiteweb.fr>";







    if ($_POST['envoi']) {







    $message_remerciement = "Votre message a bien été envoyé. MERCI";







    // E-mail headers:



    $headers ="MIME-Version: 1.0 \n";



    $headers .="From: <info@monsiteweb.fr>\n";







    $headers .="Content-Type: text/html; charset=iso-8859-1 \n";







    $subject = "Une question au webmaster";







    $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, "-f info@monsiteweb.fr")) {



    echo '<script>



    alert( "Envoi du formulaire impossible");



    </script>';



    } // Closing if !mail...



    echo '<script>



    alert( "Votre message a bien été envoyé." );



    top.document.location = "/";



    </script>';



    die;



    } // Closing if edit



    ?>
    <title>Contactez le Franck Depannage</title>
    <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("Champs vide")
    return false
    } if (mail_form.champ2.value == "") {
    alert("Champs vide")
    return false
    } if (mail_form.zone_email.value == "") {
    alert("champs mal remplit")
    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
    }if (mail_form.zone_texte.value == "") {
    alert("message vide")
    return false
    } } // Fin de la fonction

    </script>
    </head>
    <body>
    <form name="mail_form" method="post"
    action="/contact.php" 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();



    }



    ?>
    </p>
    <p align="center"> </p>
    <table align="center" border="0" width="566">
    <tbody>
    <tr>
    <td><font face="Verdana" size="2">Votre
    Nom</font></td>
    <td><input name="champ1" type="text"></td>
    </tr>
    <tr>
    <td><font face="Verdana" size="2">Votre
    ville</font></td>
    <td><input name="champ2" type="text"></td>
    </tr>
    <tr>
    <td width=""><font face="Verdana"
    size="2">Votre adresse e_mail</font></td>
    <td width=""><input name="zone_email"
    type="text"></td>
    </tr>
    <tr>
    <td valign="top"><font face="Verdana"
    size="2">Votre message</font></td>
    <td><textarea name="zone_texte" cols="50"
    rows="10"></textarea></td>
    </tr>
    <tr>
    <td valign="top"><input name="nbre_champs_texte"
    id="nbre_champs_texte" value="2" type="hidden">
    <input name="nbre_zones_texte" value="1"
    type="hidden"> <input name="nbre_zone_email"
    value="1" type="hidden"> <input
    name="titre_champ1" value="Votre Nom" type="hidden"><input
    name="titre_champ2" value="ville"
    type="hidden"><input name="titre_email"
    value="Votre adresse e_mail" type="hidden"><input
    name="titre_zone" value="Votre message" type="hidden"></td>
    <td>
    <div align="center"> <input name="Reset"
    value="Effacer" type="reset"> <input name="envoi"
    value="Envoyer" type="submit"> </div>
    </td>
    </tr>
    </tbody>
    </table>
    <p></p>
    <div align="center"></div>
    </form>
    </body>
    </html>
     
  2. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 723
    J'aime reçus:
    232
    Au lieu de:
    PHP:
    <span class="syntaxdefault">$headers </span><span class="syntaxkeyword">.=</span><span class="syntaxstring">"From: <info@monsiteweb.fr>\n"</span><span class="syntaxkeyword">;&nbsp;</span><span class="syntaxdefault"></span>
    Il faudrait mettre:
    PHP:
    <span class="syntaxdefault">$headers </span><span class="syntaxkeyword">.=</span><span class="syntaxstring">"From: <</span><span class="syntaxkeyword">{</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'zone_email'</span><span class="syntaxkeyword">]}</span><span class="syntaxstring">>\n"</span><span class="syntaxkeyword">;&nbsp;</span><span class="syntaxdefault"></span>
    Attention le code que je viens de donner présente une faille:
    https://www.phpsecure.info/v2/article/MailHeadersInject.php

    Il faudrait donc valider l'email avec:
    PHP:
    <span class="syntaxdefault">if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">filter_var</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'zone_email'</span><span class="syntaxkeyword">],</span><span class="syntaxdefault"> FILTER_VALIDATE_EMAIL</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">===</span><span class="syntaxdefault"> false</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{...}&nbsp;</span><span class="syntaxdefault"></span>
    NB: pour faire du code un peu plus 2016 friendly:
    http://swiftmailer.org/
    https://github.com/PHPMailer/PHPMailer
     
  3. kcnarfy
    kcnarfy Nouveau WRInaute
    Inscrit:
    29 Septembre 2008
    Messages:
    4
    J'aime reçus:
    0
    Merci Spoot, pardon pour ma "nullissitude", ta ligne de code contre la faille, je la met ou exactement ? :D
     
  4. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 723
    J'aime reçus:
    232
    Quelque part par là:
    PHP:
    <span class="syntaxdefault"></span><span class="syntaxkeyword">if&nbsp;(</span><span class="syntaxdefault">filter_var</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'zone_email'</span><span class="syntaxkeyword">],&nbsp;</span><span class="syntaxdefault">FILTER_VALIDATE_EMAIL</span><span class="syntaxkeyword">)&nbsp;===&nbsp;</span><span class="syntaxdefault">false&nbsp;</span><span class="syntaxkeyword">&&&nbsp;@!</span><span class="syntaxdefault">mail</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$email_dest&nbsp;</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$subject</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$sortie</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$headers</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxstring">"-f&nbsp;info@monsiteweb.fr"</span><span class="syntaxkeyword">))&nbsp;{&nbsp;</span><span class="syntaxdefault"></span>
    A la barbare parce que normalement il faudrait afficher un message d'erreur etc etc.
     
  5. kcnarfy
    kcnarfy Nouveau WRInaute
    Inscrit:
    29 Septembre 2008
    Messages:
    4
    J'aime reçus:
    0
    Super, je vais essayer ça; je sais pas comment te remercier, en tout cas 1000 merci !
     
  6. indigene
    indigene WRInaute accro
    Inscrit:
    7 Septembre 2003
    Messages:
    3 628
    J'aime reçus:
    65
    Code:
    $headers .="From: <info@monsiteweb.fr>\n";
            $headers .= 'Reply-To: <'.$_POST['zone_email'].'>\n";
    
    et ça ?
     
  7. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 723
    J'aime reçus:
    232
    Aussi oui, mais même faille, donc penser à sécuriser.
     
  8. kcnarfy
    kcnarfy Nouveau WRInaute
    Inscrit:
    29 Septembre 2008
    Messages:
    4
    J'aime reçus:
    0
    Avec la ligne pour sécuriser je ne reçois plus aucun message en fait
     
Chargement...
Similar Threads - contact mettre expéditeur Forum Date
WordPress Comment faire un tracking des demandes sur un formulaire contact form 7 ? Google Analytics 2 Juillet 2019
Importer ses contacts Gmail dans Twitter (invitations) Twitter 21 Mars 2019
Fin export email contact (Linkedin) Autres réseaux sociaux 24 Novembre 2018
Spam de message de contact Administration d'un site Web 8 Juin 2018
Tracking des formulaire de contact avec Google tag Manager Google Analytics 21 Mai 2017
Contact Twitter pour les publicités ? Twitter 3 Juin 2016
Brevet Google : les cercles de contacts dans les réseaux sociaux Google+ 11 Mai 2016
Plus possible d'importer contacts.csv sur facebook ? Facebook 23 Octobre 2015
Indexer la page de contact ? Débuter en référencement 7 Octobre 2015
Importer des contacts emails sur FB pour inciter à aimer la page ? Facebook 28 Septembre 2015
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice