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

  FORUM HardWare.fr
  Programmation
  PHP

  [php] envoi de mail par formulaire de contact

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[php] envoi de mail par formulaire de contact

n°1523866
nina dj
Posté le 05-03-2007 à 16:08:20  profilanswer
 

bonjour à tous!
je suis en train de faire un formulaire de contact qui devrait automatiquement etre envoyé dans ma boite mail. J'ai donc créé une page avec un formulaire (contact.php) et une page mail.php qui affiche que le message a été envoyé
voila le code
>>page contact.php

Code :
  1. <form action="mail.php" method="post" name="contact" id="contact" onsubmit="return verif_formulaire(contact)" >
  2.     <input type="hidden" name="destinataire" value="nina_bee@hotmail.fr"  id="destinataire"/>
  3. <input type="hidden" name="objet" value="contact client" id="objet" />
  4. <p>
  5.  <label for="mail" class="formText">Votre adresse e-mail professionnelle: </label><br>
  6. <span class="champs">
  7.       <input name="mail" type="text" id="mail" size="40" />
  8.     </span></p>
  9.   <p>
  10.    <label for="www" class="formText">Votre site web entreprise:</label><br>
  11. <span class="champs">
  12.       <input name="www" type="text" id="www" size="40" />
  13.     </span> </p>
  14.   <p>
  15.    <label for="text" class="formText">Votre message: </label><br>
  16.      <span class="champs">
  17.       <textarea name="text" cols="31" rows="15" id="text" ></textarea>
  18.     </span>
  19.     </p>
  20.   <p>
  21.    <label for="tel" class="formText">Votre numéro de téléphone : </label><br>
  22. <span class="champs">
  23.       <input name="tel" type="text" id="tel" size="40" />
  24.     </span>
  25.   </p>
  26.   <p align="right" class="formText"><input type="submit" value="envoi" name="submit" /></p>
  27.   </form>


 
page mail.php

Code :
  1. <?php
  2. $destinataire = $_POST['destinataire'];
  3. $objet = $_POST['objet'];
  4. $mailclient = htmlentities("From: ".$_POST['mail']);
  5. $siteclient = $_POST['www'];
  6. $message = stripslashes(htmlentities($_POST['text']));
  7. $tel = $_POST['tel'];
  8. ?>
  9. .....du code ici....
  10. <p class="texteNormal"> <?php
  11.        $mail = mail($destinataire,$siteclient,$mailclient,$message,$tel);
  12.        if(isset($mail)){
  13.    echo $destinataire." ".$siteclient." ".$mailclient." ".$message." ".$tel."<br>";
  14.  
  15.    echo "Message envoyé";
  16.    }
  17. ?></p>
  18. <p align="center"><a href="contact.php" class="lien">retour à la page de contact</a>&nbsp;-&nbsp;<a href="index.php" class="lien">retour à la page d'acceuil</a></p>


 
le problème? ben ca marche pas tout simplement.... Et pas d'erreur ni rien mais quand j'ouvre ma boite mail je ne reçois rien
Quelqun saurait il pourquoi?

mood
Publicité
Posté le 05-03-2007 à 16:08:20  profilanswer
 

n°1524056
FlorentG
Unité de Masse
Posté le 05-03-2007 à 19:23:33  profilanswer
 

Y'a une grave faille de sécurité permettant d'exploiter ton formulaire et de le transformer en robot à spam [:dawa]
 
Ne récupère jamais un destinataire comme ça à partir d'un formulaire, c'est trop facilement truandable. Pour $mailclient, htmlentities ne sert strictement à rien (et peut même tout casser), dans un header mail ce n'est pas de l'html. Utilise plutôt un :

Code :
  1. $mailClient = str_replace(array("\r", "\n" ), '', $_POST['mail']);


Comme ça il sera protégé des inclusions barbares d'header mails.
 
Pour $message aussi, htmlentities ne sert à rien (et provoquera des problèmes d'affichage pour les caractères accentués, vu que le mail est envoyé au format texte).
 
Autre problème, l'appel à la fonction mail est totalement erroné. Rappel de la fonction :

Code :
  1. bool mail ( string $to, string $subject, string $message [, string $additional_headers [, string $additional_parameters]] )


T'as mis tes variables à la suite, du coup dans le sujet se trouvera le site client, dans le message son mail, dans les header le message !?!?!
 
Ca serait plutôt :

Code :
  1. $message = 'Mail : ' . $mailClient . "\n"
  2.   . 'Site : ' . $siteClient . "\n"
  3.   . 'Message : ' . $message . "\n"
  4.   . 'Tel : ' . $tel;
  5. $mail = mail($destinataire, $objet, $message, $mailClient);


Un truc comme ça...
 
 
Aussi, il est courtois et gentil de ne pas afficher directement un message de confirmation, mais plutôt d'utiliser une redirection de type 303 See Other, comme ça si le gars clique sur rafraîchir, il a pas un message pourraxe du genre "renvoyer les donnée post" (mais là ça va être dur, on va se taper à coup sûr des problèmes d'headers ;) )


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

  [php] envoi de mail par formulaire de contact

 

Sujets relatifs
[RAD&FORMULAIRE] Générer un formulaire depuis une base/tableFormulaire html
Envoi de fichier, tomcatprobleme d'envoi d'une variable avec get
Pb formulaire[POP] Nouveaux mails ?
traitement formulairePB Envoie de mail avec pièce jointe
formulaire sur un site internetformulaire de contact envoi d'un mail
Plus de sujets relatifs à : [php] envoi de mail par formulaire de contact


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