Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2482 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Problème de headers dans formulaire traité en php

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème de headers dans formulaire traité en php

n°1928665
arges
Posté le 03-10-2009 à 10:50:38  profilanswer
 

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.

mood
Publicité
Posté le 03-10-2009 à 10:50:38  profilanswer
 

n°1928666
abais
Posté le 03-10-2009 à 11:03:49  profilanswer
 

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.
n°1928667
arges
Posté le 03-10-2009 à 11:09:08  profilanswer
 

J'ai fait les modifications mais sans succès


Message édité par arges le 03-10-2009 à 11:39:17
n°1928669
abais
Posté le 03-10-2009 à 12:21:58  profilanswer
 

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.
n°1928674
arges
Posté le 03-10-2009 à 12:58:15  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Problème de headers dans formulaire traité en php

 

Sujets relatifs
Problème dans la rédaction d'un petit scriptProblème d' espace dans le résultat de la date
probleme installation de forum sur freeProbleme de Div et evenement (js)
Probleme fopenProblème dans ma boucle
Problème grosse requête PHP ![PHP] Problème de validation de schéma XSD
Problème requête select avec double résultatsProblème de session avec un objet Soap
Plus de sujets relatifs à : Problème de headers dans formulaire traité en php


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR