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

  FORUM HardWare.fr
  Programmation
  PHP

  problème de formulaire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problème de formulaire

n°2023588
quaresma
Posté le 18-09-2010 à 14:41:09  profilanswer
 

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

mood
Publicité
Posté le 18-09-2010 à 14:41:09  profilanswer
 

n°2023596
roondar
Posté le 18-09-2010 à 16:55:58  profilanswer
 

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
n°2023622
quaresma
Posté le 18-09-2010 à 22:12:43  profilanswer
 

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 :(
 

n°2023623
roondar
Posté le 18-09-2010 à 22:33:30  profilanswer
 

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 !

n°2023680
quaresma
Posté le 19-09-2010 à 15:12:14  profilanswer
 

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
n°2023747
stef_dober​mann
Personne n'est parfait ...
Posté le 19-09-2010 à 23:02:39  profilanswer
 

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


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

---------------
Tout à commencé par un rêve...
n°2023776
jeff@be
Posté le 20-09-2010 à 09:21:03  profilanswer
 

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).

n°2023837
rufo
Pas me confondre avec Lycos!
Posté le 20-09-2010 à 13:41:16  profilanswer
 

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
n°2023848
quaresma
Posté le 20-09-2010 à 14:05:39  profilanswer
 

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
n°2023862
rufo
Pas me confondre avec Lycos!
Posté le 20-09-2010 à 14:38:51  profilanswer
 

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
mood
Publicité
Posté le 20-09-2010 à 14:38:51  profilanswer
 

n°2023894
stef_dober​mann
Personne n'est parfait ...
Posté le 20-09-2010 à 15:25:00  profilanswer
 

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...
n°2023912
rufo
Pas me confondre avec Lycos!
Posté le 20-09-2010 à 15:49:14  profilanswer
 

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
n°2024015
quaresma
Posté le 21-09-2010 à 00:03:09  profilanswer
 

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

n°2024051
stef_dober​mann
Personne n'est parfait ...
Posté le 21-09-2010 à 10:11:09  profilanswer
 

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...
n°2033397
quaresma
Posté le 31-10-2010 à 23:04:19  profilanswer
 

Problème résolu merci


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

  problème de formulaire

 

Sujets relatifs
Problème d'aperçu partiel de mon formulaire php dans Outlookproblème formulaire de contact
[Resolu] Problème formulaire envoi mailProblème : aucun accent dans mon formulaire
Problème formulaire de contact / envoi mailProblème formulaire HTML& PHP
Problème formulaireprobléme formulaire
probleme IE - site EXTENSIBLE -- site d'archi 
Plus de sujets relatifs à : problème de formulaire


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