Problème de headers dans formulaire traité en php

Problème de headers dans formulaire traité en php - PHP - Programmation

Marsh Posté le 03-10-2009 à 10:50:38    

Bonjour,
 
Je viens vous demander conseils car j'ai un formulaire de contact simple qui ne fonctionne pas correctement sous ie. J'ai localisé le problème au niveau du paramètre headers de la fonction mail()
 
Voici le code de la fonction de traitement du formulaire :  
 

Code :
  1. <?php
  2. error_reporting(0);
  3. if(isset($_POST['nom']) OR isset($_POST['prenom']) OR isset($_POST['question']))
  4. {
  5. function valid_email($str)
  6. {
  7.  return ( ! preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $str)) ? FALSE : TRUE;
  8. }
  9. $erreur ="";
  10. if ($_POST['nom'] =="" ) $erreur.= 'Veuillez préciser votre nom<br />';
  11. if ($_POST['prenom'] =="" ) $erreur.= 'Veuillez préciser votre prénom<br />';
  12. if ($_POST['adresse_email'] =="" ) $erreur.= 'Veuillez préciser votre adresse email<br />';
  13. if ($_POST['question'] =="" ) $erreur.= 'Vous n\'avez pas rempli le champ message<br />';
  14. if (valid_email ($_POST['adresse_email']) == FALSE) $erreur .="L'adresse email n'est pas valide<br />";
  15. if($erreur == "" )
  16. {
  17.  if ($_POST['objet'] == "commercial" ) $to = 'xxx@xxx.com';
  18.  else $to = 'xxx@xxx.com';
  19. $headers = 'From: '.$_POST['adresse_email']. "\r\n";
  20.       $headers .='Reply-To: '.$_POST['adresse_email']. "\r\n";
  21.       $headers .='X-Mailer: PHP/' . phpversion();
  22.  $subject = "Formulaire de contact";
  23.  $message="";
  24.  $message = "Prenom : ";
  25.  $message .= htmlspecialchars($_POST['prenom']);
  26.  $message .= "\n";
  27.  $message .= "Nom: ";
  28.  $message .= htmlspecialchars($_POST['nom']);
  29.  $message .= "\n";
  30.  $message .= "Email: ";
  31.  $message .= htmlspecialchars($_POST['adresse_email']);
  32.  $message .= "\n";
  33.  $message .= "Objet : ";
  34.  $message .= htmlspecialchars($_POST['objet']);
  35.  $message .= "\n";
  36.  $message .= "\n";
  37.  $message .= "\n";
  38.  $message .= htmlspecialchars($_POST['question']);
  39.  if(mail($to, $subject, $message,$headers))
  40.  {
  41.  echo '<div style="text-align:center">';
  42.  echo '<div class="messages">';
  43.  echo '<p>Votre message &agrave; bien &eacute;t&eacute; envoy&eacute;. <br>';
  44.  echo 'Vous recevrez très prochainement une réponse de notre part.</p>';
  45.  echo'<p><a href="/index.php">Retourner sur la page d\'accueil</a></p>';
  46.  echo '</div></div>';
  47.  }
  48.  else {
  49.   echo '<div style="text-align:center">';
  50.   echo '<div class="messages">';
  51.      echo'<p>Nous n\'avons pas pu transmettre votre message.</p>';
  52.   echo'<p> Merci d\'essayer &agrave; nouveau.</p>';
  53.   echo '</div></div>';
  54.  }
  55. }
  56. else {
  57.  echo '<div style="text-align:center">';
  58.  echo '<div class="messages">';
  59.  echo '<p>';
  60.  echo $erreur;
  61.  echo'</p></div></div>';
  62. }
  63. }
  64. ?>


 
En retirant $headers de la fonction mail(), le message est bien envoyé sous ie. Mais j'aimerais comprendre d'où vient l'erreur.
 
Merci par avance de vos réponses.

Reply

Marsh Posté le 03-10-2009 à 10:50:38   

Reply

Marsh Posté le 03-10-2009 à 11:03:49    

Il y a des espaces superflux déja...
Et tu melange guillemet et simple quote...
$headers = 'From: '.$_POST['adresse_email']._"\r\n";
Je ne sais pas si ça pose problème mais ça me semble bizare...


Message édité par abais le 03-10-2009 à 11:05:33

---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Marsh Posté le 03-10-2009 à 11:09:08    

J'ai fait les modifications mais sans succès


Message édité par arges le 03-10-2009 à 11:39:17
Reply

Marsh Posté le 03-10-2009 à 12:21:58    

Peut-etre en donnant d'autres propriétés au header...
J'avoue ne pas comprendre le rôle du "MIME-Version" et du "X-Mailer"...
 
Perso j'utilise bêtement le même header à chaque coup :

Code :
  1. $headerMail="From: ".$prenom." ".$nom." <".$adresse_mail.">\n";
  2. $headerMail.="Reply-To: ".$prenom." ".$nom." <".$adresse_mail.">\n";
  3. $headerMail.="X-priority:3\n";
  4. $headerMail.="MIME-Version: 1.0\r\n";
  5. $headerMail.="Content-Type: text/html; charset='utf-8'\n";


---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Marsh Posté le 03-10-2009 à 12:58:15    

Merci de m'aider
 
J'ai testé cette solution mais sans succès.
(Je ne sais pas si le fait de mettre \n ou \r\n a de l'importance, du coup j'ai testé les deux)
 
Ce qui est bizarre c'est que le problème ne se pose pas sous firefox.  
 
Edit :  
Par contre je viens de regarder et ça ne fonctionne pas non plus sur opera.


Message édité par arges le 03-10-2009 à 13:02:37
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed