Formulaire de contact, mettre expéditeur en reponse

Nouveau WRInaute
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>
 
WRInaute accro
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
 
WRInaute accro
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.
 
WRInaute accro
Code:
$headers .="From: <info@monsiteweb.fr>\n";
        $headers .= 'Reply-To: <'.$_POST['zone_email'].'>\n";

et ça ?
 
Discussions similaires
Haut