problème de formulaire

problème de formulaire - PHP - Programmation

Marsh Posté le 18-09-2010 à 14:41:09    

Bonjour,
 
je viens de créer un formulaire en PHP.
 
Mais lorsque je saisis le formulaire et que je l'envoie, je reçois dans ma messagerie la copie du message (normal) mais avec comme expéditeur le nom de mon compte OVH (nomducompteovh <nomducompteovh@60gp.ovh.net> )
 
Cela fait que si quelqu'un m'envoie un message je ne pourrai pas lui répondre car comme expéditeur il y aura comme e-mail : nomducompteovh <nomducompteovh@60gp.ovh.net>
 
Savez-vous comment je pourrai remédier à ce problème ?
 
Merci beaucoup et bonne journée

Reply

Marsh Posté le 18-09-2010 à 14:41:09   

Reply

Marsh Posté le 18-09-2010 à 16:55:58    

http://php.net/manual/fr/function.mail.php

Code :
  1. <?php
  2.      $to      = 'personne@example.com';
  3.      $subject = 'le sujet';
  4.      $message = 'Bonjour !';
  5.      $headers = 'From: webmaster@example.com' . "\r\n" .
  6.      'Reply-To: webmaster@example.com' . "\r\n" .
  7.      'X-Mailer: PHP/' . phpversion();
  8.      mail($to, $subject, $message, $headers);
  9. ?>


Message édité par roondar le 18-09-2010 à 16:59:10
Reply

Marsh Posté le 18-09-2010 à 22:12:43    

En fait, le "de:" devrait être l'e-mail de la personne qui envoie le message.  
Exemple : brice.ovs@exemple.fr (une personne quelconque)
 
Et non pas le nomducompteovh <nomducompteovh@60gp.ovh.net> que j'ai actuellement :(
 

Reply

Marsh Posté le 18-09-2010 à 22:33:30    

bah sachant que c'est le serveur qui envoit le mail, c'est normal que tu as ovh en expediteur.
Il suffit juste de remplacer la valeur de From !

Reply

Marsh Posté le 19-09-2010 à 15:12:14    

Oui j'ai remplacé la valeur de "From:"

 

Voici mon code pour plus de clarté :

 
Code :
  1. <?php
  2.     /*
  3.         ********************************************************************************************
  4.         CONFIGURATION
  5.         ********************************************************************************************
  6.     */
  7.     // destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
  8.     $destinataire = 'jeanpierre.dujardin@oomail.com';
  9.     // copie ? (envoie une copie au visiteur)
  10.     $copie = 'oui'; // 'oui' ou 'non'
  11.     // Messages de confirmation du mail
  12.     $message_envoye = "Votre message nous est bien parvenu ! Vous allez recevoir une copie de votre message dans votre boîte mail.";
  13.     $message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";
  14.     // Messages d'erreur du formulaire
  15.     $message_erreur_formulaire = "Vous devez d'abord <a href=\"contact.php\">envoyer le formulaire</a>.";
  16.     $message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";
  17.     /*
  18.         ********************************************************************************************
  19.         FIN DE LA CONFIGURATION
  20.         ********************************************************************************************
  21.     */
  22.     // on teste si le formulaire a été soumis
  23.     if (!isset($_POST['envoi']))
  24.     {
  25.         // formulaire non envoyé
  26.         echo '<p>'.$message_erreur_formulaire.'</p>'."\n";
  27.     }
  28.     else
  29.     {
  30.         /*
  31.          * cette fonction sert à nettoyer et enregistrer un texte
  32.          */
  33.         function Rec($text)
  34.         {
  35.             $text = trim($text); // delete white spaces after & before text
  36.             if (1 === get_magic_quotes_gpc())
  37.             {
  38.                 $stripslashes = create_function('$txt', 'return stripslashes($txt);');
  39.             }
  40.             else
  41.             {
  42.                 $stripslashes = create_function('$txt', 'return $txt;');
  43.             }
  44.             // magic quotes ?
  45.             $text = $stripslashes($text);
  46.             return $text;
  47.         };
  48.         /*
  49.          * Cette fonction sert à vérifier la syntaxe d'un email
  50.          */
  51.         function IsEmail($email)
  52.         {
  53.             $pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
  54.             return (eregi($pattern,$email)) ? true : false;
  55.         };
  56.         // formulaire envoyé, on récupère tous les champs.
  57.        
  58.         $monsieur = (isset($_POST['monsieur']))   ? Rec($_POST['monsieur'])   : '';
  59.         $madame = (isset($_POST['madame'])) ? Rec($_POST['madame']) : '';
  60.         $moiselle = (isset($_POST['moiselle'])) ? Rec($_POST['moiselle']) : '';
  61.         $nom     = (isset($_POST['nom']))     ? Rec($_POST['nom'])     : '';
  62.         $email   = (isset($_POST['email']))   ? Rec($_POST['email'])   : '';
  63.         $message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
  64.         $telephone = (isset($_POST['tel']))   ? Rec($_POST['tel'])   : '';
  65.         $ville = (isset($_POST['ville'])) ? Rec($_POST['ville']) : '';
  66.         // On va vérifier les variables et l'email ...
  67.         $email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré
  68.         if (($nom != '') && ($email != '') && ($message != '') && ($telephone != '') && ($ville != ''))
  69.         {
  70.             // les 4 variables sont remplies, on génère puis envoie le mail
  71.             $headers = 'De: '.$nom.' <'.$email.'>' . "\r\n" . 'Téléphone: '.$telephone.'' . "\r\n" . 'Message: ' . "\r\n" . ''.$message.'' . "\r\n";           
  72.             // envoyer une copie au visiteur ?
  73.             if ($copie == 'oui')
  74.             {
  75.                 $cible = $destinataire.','.$email;
  76.             }
  77.             else
  78.             {
  79.                 $cible = $destinataire;
  80.             };
  81.             // Remplacement de certains caractères spéciaux
  82.             $message = str_replace("'","'",$message);
  83.             $message = str_replace("’","'",$message);
  84.             $message = str_replace("&quot;",'"',$message);
  85.             $message = str_replace('<br>','',$message);
  86.             $message = str_replace('<br />','',$message);
  87.             $message = str_replace("&lt;","<",$message);
  88.             $message = str_replace("&gt;",">",$message);
  89.             $message = str_replace("&amp;","&",$message);
  90.             // Envoi du mail
  91.             if (mail($cible, $message, $headers))
  92.             {
  93.                 echo '<p>'.$message_envoye.'   <a href="http://www.nomdedomaine.fr/contact.php">Cliquez-ici pour revenir au formulaire</a></p>'."\n";
  94.             }
  95.             else
  96.             {
  97.                 echo '<p>'.$message_non_envoye.'  <a href="http://www.nomdedomaine.fr/contact.php">Retour au formulaire</a></p>'."\n";
  98.             };
  99.         }
  100.         else
  101.         {
  102.             // une des 3 variables (ou plus) est vide ...
  103.             echo '<p>'.$message_formulaire_invalide.' <a href="http://www.nomdedomaine.fr/contact.php">Retour au formulaire</a></p>'."\n";
  104.         };
  105.     }; // fin du if (!isset($_POST['envoi']))
  106. ?>
 

Merci et bonne journée


Message édité par quaresma le 19-09-2010 à 15:16:14
Reply

Marsh Posté le 19-09-2010 à 23:02:39    

Edit :j'ai écrit trop vite....


Message édité par stef_dobermann le 19-09-2010 à 23:03:39

---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 20-09-2010 à 09:21:03    

Ca peut pas marcher... tu utilises la fonction mail comme ceci:

Code :
  1. mail($cible, $message, $headers)


où  

Code :
  1. $headers = 'De: '.$nom.' <'.$email.'>' . "\r\n" . 'Téléphone: '.$telephone.'' . "\r\n" . 'Message: ' . "\r\n" . ''.$message.'' . "\r\n";


 
1. la fonction mail a 3 arguments obligatoires, auxquels tu peux rajouter l'argument "headers" facultatif, dans l'ordre

  • destinataire
  • sujet du mail
  • message
  • headers


2. en construisant ton entête de mail, tu utilises des entêtes "De:", "Téléphone:", "Message:"... ce ne sont pas des entêtes de mail ça.
 
Donc tu dois revoir la construction de ta variable "$headers" (ligne 82) et l'utilisation de la fonction mail() (ligne 105).

Reply

Marsh Posté le 20-09-2010 à 13:41:16    

Et en bonus track, un petit rappel : c'est pas dit que si tu mets l'adresse mail de celui qui t'as écrit via ton formulaire dans le header, le mail soit envoyé. En effet, pour limiter le spam, OVH peut très bien autoriser l'envoi du mail que si le header contient un mail du domaine ovh.net :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 20-09-2010 à 14:05:39    

Bonjour,

 

C'est bon j'ai modifié les valeurs mail() et headers dans mon code en m'aidant du manuel PHP.
Tout fonctionne correctement.

 

Pour information, voici le bon code :

 
Code :
  1. <?php
  2.     /*
  3.         ********************************************************************************************
  4.         CONFIGURATION
  5.         ********************************************************************************************
  6.     */
  7.     // destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
  8.     $destinataire = 'jeanpierre.dujardin@oomail.com';
  9.     // le sujet
  10.     $subject = 'Votre gite';
  11.     // copie ? (envoie une copie au visiteur)
  12.     $copie = 'oui'; // 'oui' ou 'non'
  13.     // Messages de confirmation du mail
  14.     $message_envoye = "Votre message nous est bien parvenu ! Vous allez recevoir une copie de votre message dans votre boîte mail.";
  15.     $message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";
  16.     // Messages d'erreur du formulaire
  17.     $message_erreur_formulaire = "Vous devez d'abord <a href=\"contact.php\">envoyer le formulaire</a>.";
  18.     $message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";
  19.     /*
  20.         ********************************************************************************************
  21.         FIN DE LA CONFIGURATION
  22.         ********************************************************************************************
  23.     */
  24.     // on teste si le formulaire a été soumis
  25.     if (!isset($_POST['envoi']))
  26.     {
  27.         // formulaire non envoyé
  28.         echo '<p>'.$message_erreur_formulaire.'</p>'."\n";
  29.     }
  30.     else
  31.     {
  32.         /*
  33.          * cette fonction sert à nettoyer et enregistrer un texte
  34.          */
  35.         function Rec($text)
  36.         {
  37.             $text = trim($text); // delete white spaces after & before text
  38.             if (1 === get_magic_quotes_gpc())
  39.             {
  40.                 $stripslashes = create_function('$txt', 'return stripslashes($txt);');
  41.             }
  42.             else
  43.             {
  44.                 $stripslashes = create_function('$txt', 'return $txt;');
  45.             }
  46.             // magic quotes ?
  47.             $text = $stripslashes($text);
  48.             return $text;
  49.         };
  50.         /*
  51.          * Cette fonction sert à vérifier la syntaxe d'un email
  52.          */
  53.         function IsEmail($email)
  54.         {
  55.             $pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
  56.             return (eregi($pattern,$email)) ? true : false;
  57.         };
  58.         // formulaire envoyé, on récupère tous les champs.
  59.        
  60.         $monsieur = (isset($_POST['monsieur']))   ? Rec($_POST['monsieur'])   : '';
  61.         $madame = (isset($_POST['madame'])) ? Rec($_POST['madame']) : '';
  62.         $moiselle = (isset($_POST['moiselle'])) ? Rec($_POST['moiselle']) : '';
  63.         $nom     = (isset($_POST['nom']))     ? Rec($_POST['nom'])     : '';
  64.         $email   = (isset($_POST['email']))   ? Rec($_POST['email'])   : '';
  65.         $message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
  66.             $telephone = (isset($_POST['tel']))   ? Rec($_POST['tel'])   : '';
  67.         $ville = (isset($_POST['ville'])) ? Rec($_POST['ville']) : '';
  68.         // On va vérifier les variables et l'email ...
  69.         $email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré
  70.         if (($nom != '') && ($email != '') && ($message != '') && ($telephone != '') && ($ville != ''))
  71.         {
  72.             // les 4 variables sont remplies, on génère puis envoie le mail
  73.             $headers = 'From: '.$email.'' . "\r\n" . 'Reply-To: '.$email.'' . "\r\n" . 'X-Mailer: PHP/' . phpversion();           
  74.             // envoyer une copie au visiteur ?
  75.             if ($copie == 'oui')
  76.             {
  77.                 $to = $destinataire.','.$email;
  78.             }
  79.             else
  80.             {
  81.                 $to = $destinataire;
  82.             };
  83.             // Remplacement de certains caractères spéciaux
  84.             $message = str_replace("&#039;","'",$message);
  85.             $message = str_replace("&#8217;","'",$message);
  86.             $message = str_replace("&quot;",'"',$message);
  87.             $message = str_replace('<br>','',$message);
  88.             $message = str_replace('<br />','',$message);
  89.             $message = str_replace("&lt;","<",$message);
  90.             $message = str_replace("&gt;",">",$message);
  91.             $message = str_replace("&amp;","&",$message);
  92.             $message = 'De: '.$nom.' <'.$email.'>' . "\r\n" . 'Téléphone: '.$telephone.'' . "\r\n" . 'Message: ' . "\r\n" . ''.$message.'' . "\r\n";
  93.             // Envoi du mail
  94.             if (mail($to, $subject, $message, $headers))
  95.             {
  96.                 echo '<p>'.$message_envoye.'   <a href="http://www.nomdedomaine.fr/contact.php">Cliquez-ici pour revenir au formulaire</a></p>'."\n";
  97.             }
  98.             else
  99.             {
  100.                 echo '<p>'.$message_non_envoye.'  <a href="http://www.nomdedomaine.fr/contact.php">Retour au formulaire</a></p>'."\n";
  101.             };
  102.         }
  103.         else
  104.         {
  105.             // une des 3 variables (ou plus) est vide ...
  106.             echo '<p>'.$message_formulaire_invalide.' <a href="http://www.nomdedomaine.fr/contact.php">Retour au formulaire</a></p>'."\n";
  107.         };
  108.     }; // fin du if (!isset($_POST['envoi']))
  109. ?>
 

Merci et bonne journée


Message édité par quaresma le 20-09-2010 à 14:06:06
Reply

Marsh Posté le 20-09-2010 à 14:38:51    

Tu devrais peut-être sécuriser un peu plus ça, en particulier le champ email.
Il se passe quoi si le mec met plusieurs adresses dans le champ? Ca va partir chez toutes les adresses :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 20-09-2010 à 14:38:51   

Reply

Marsh Posté le 20-09-2010 à 15:25:00    

j'aurais dit ligne 61 fonction IsEmail
le partten vérifie qu'il n'y a qu'un seul "@" non ?
donc si $email = "toto@stef05.com,tata@stef05.com,tete@stef05.com" normalement ça passe pas !
je me trompe :??:
 
Edit : les adresse mail sont bidons bien sur ;) par contre le domaine est réel :)


Message édité par stef_dobermann le 20-09-2010 à 15:27:29

---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 20-09-2010 à 15:49:14    

J'avais bien vu la fonction de vérif mais pas où elle était appelée (L80). :( Comprend pas pourquoi elle est pas appelée L82 dans le "gros test"...
 
Et puis définir des fonctions dans un bloc else, ça me choque, perso :/...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 21-09-2010 à 00:03:09    

Pas grave ça fonctionne. Et c'est pour un petit site.
 
Je verrai à l'avenir, mais merci tout de même.

Reply

Marsh Posté le 21-09-2010 à 10:11:09    

rufo a écrit :

J'avais bien vu la fonction de vérif mais pas où elle était appelée (L80). :( Comprend pas pourquoi elle est pas appelée L82 dans le "gros test"...
 
Et puis définir des fonctions dans un bloc else, ça me choque, perso :/...


 
c'est sur que de mettre une fonction dans une condition c'est pas propre


---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 31-10-2010 à 23:04:19    

Problème résolu merci

Reply

Sujets relatifs:

Leave a Replay

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