Formulaire => mail

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Formulaire => mail

par Devether » 16 juin 2006, 10:50

il faut laisser ta 1ere ligne du header en la changeant.

Remplacer :
$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";
par :
$headers .= "Content-Type: text/html; charset=iso-8859-1\r\n";

par Invité » 15 juin 2006, 19:32

Bon l'envoi et la réception marchent plutôt bien. Il me reste juste un petit problème au niveau de l'affichage.

Pour commençer j'ai changé le :
$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n"; 
Par un nouvel header :
$headers .= "From: $nom <$mail>\r\nReply-to : $nom <$mail>\nX-Mailer:PHP"; 
Ce qui me permet d'afficher dans mon mail le texte au format HTML enfin du moins normalement.

Mon problème se situe à ce niveau la :
$body="$nom + '<br>' + $prenom + '<br>' + $adresse + '<br>' + $code_postal + '<br>' + $ville + '<br>' + $mail + '<br>' + $telephone + '<br>' + $fax + '<br>' + $mobile +  '<br>' +  '<br>'   + $message";
Avec ce code l'entête me permetant d'afficher le HTML sur le mail, les + ' et '<br>' s'affichent, ce qui rend l'apperçu assez moche.

J'ai alors tenter de suprimmer les + ainsi que les ' a ma grande surprise ça marche mais la variable $nom ne s'affichent plus ce qui me provoque un "aucun" au niveau du destinataire quand je reçois le mail. Sinon à part ce petit problème ça me donne a peu prés ce que j'attend.
$body="$nom <br> $prenom <br> $adresse <br> $code_postal <br> $ville <br> $mail <br> $telephone <br> $fax <br> $mobile +  <br> <br> $message";
Voilà, si on pouvait m'éclairer au niveau de la syntaxe a adopté pour ce 2 ou 3 dernières petites lignes de code ^^. Mici beaucoup.

par Ryle » 15 juin 2006, 17:29

C'est très probablement parce que tu n'as pas configurer de serveur smtp dans ton php.ini (par défaut la valeur est localhost, c'est à dire la machine locale).

Tu peux le résoudre en modifiant les valeurs dans le php.ini et spécifiant par exemple l'adresse smtp de ton fai pour que les mails soient envoyés et ne pas avoir de message d'avertissement :)

par Invité » 15 juin 2006, 17:17

Oui exact, désolé pour cette erreur minable ...
Maintenant à la validation j'ai cette erreur :

"Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in c:\program files\easyphp1-8\www\imm_site\envoi.php on line 28
Une erreur s'est produite"

et la je pensse que ca vient du test en local, à comfirmer. Merci encore

par Ryle » 15 juin 2006, 17:15

Ligne 7 de ton fichier envoi.php :
$HTTP-POST_VARS['mail']
au lieu de
$HTTP_POST_VARS['mail']

par Killermano » 15 juin 2006, 17:12

Désolé ( je m'inscrirais plus tard dans la soirée ).
Sinon, je vien de modifié les 3 & à la place de $ mais ça ne change rien, toujours la même erreur. Cela peut t'il venir de easy php et de mon résau local ?

par Invité » 15 juin 2006, 17:10

Oups désolé, je met l'erreur ci dessous :
" Parse error: parse error in c:\program files\easyphp1-8\www\imm_site\envoi.php on line 7 "

Merci encore

par Ryle » 15 juin 2006, 17:07

Peux tu préciser également le message d'erreur que tu obtiens ? ca sera plus facile pour comprendre ce qui ne fonctionne pas...

Une parse error, c'est simplement que ton code n'est pas correcte. Il peut te manquer un point-virgule, une acolade mal fermée, etc.
(à priori j'dirais que c'est à cause des & à la place des $ de HTTP_POST_VARS, m'enfin j'vais attendre d'en savoir plus pour me prononcer)

Formulaire => mail

par killermano » 15 juin 2006, 17:03

Bonjour,
Je viens de créer a l'aide d'un autre script un script permettant de transmettre par mail au webmaster des données entrées dans un formulaire. Le problème c'est qu'en local, le script m'affiche une parse error à la validation.

Je vous met ci dessous le code des deux pages :

Code : Tout sélectionner

Page form.htm <html> <head></head> <body> <table width="500" border="0" cellspacing="0" cellpadding="0" align="center"> <form action="envoi.php" method="post" enctype="application/x-www-form-urlencoded" name="formulaire"> <tr> <td colspan="3"> <div align="center"><font size="2" face="Arial, Helvetica, sans-serif"><b>Envoyer un message</b></font></div> </td> </tr> <tr> <td width="16%"> <div align="left"><font size="2" face="Arial, Helvetica, sans-serif">Nom</font></div> </td> <td colspan="2" width="84%"> <input type="text" name="nom" size="45" maxlength="100"> </td> </tr> <tr> <td width="16%"> <div align="left"><font size="2" face="Arial, Helvetica, sans-serif">Prenom</font></div> </td> <td colspan="2" width="84%"> <input type="text" name="prenom" size="45" maxlength="100"> </td> </tr> <tr> <td width="16%"> <div align="left"><font size="2" face="Arial, Helvetica, sans-serif">Adresse</font></div> </td> <td colspan="2" width="84%"> <input type="text" name="adresse" size="45" maxlength="120"> </td> </tr> <tr> <td width="16%"> <div align="left"><font size="2" face="Arial, Helvetica, sans-serif">Code postal</font></div> </td> <td colspan="2" width="84%"> <input type="text" name="code_postal" size="45" maxlength="120"> </td> </tr> <tr> <td width="16%"> <div align="left"><font size="2" face="Arial, Helvetica, sans-serif">Ville</font></div> </td> <td colspan="2" width="84%"> <input type="text" name="ville" size="45" maxlength="120"> </td> </tr> <tr> <td width="16%"> <div align="left"><font size="2" face="Arial, Helvetica, sans-serif">Email</font></div> </td> <td colspan="2" width="84%"> <input type="text" name="mail" size="45" maxlength="120"> </td> </tr> <tr> <td width="16%"> <div align="left"><font size="2" face="Arial, Helvetica, sans-serif">T&eacute;l&eacute;phone</font></div> </td> <td colspan="2" width="84%"> <input type="text" name="telephone" size="45" maxlength="120"> </td> </tr> <tr> <td width="16%"> <div align="left"><font size="2" face="Arial, Helvetica, sans-serif">Fax</font></div> </td> <td colspan="2" width="84%"> <input type="text" name="fax" size="45" maxlength="120"> </td> </tr> <tr> <td width="16%"> <div align="left"><font size="2" face="Arial, Helvetica, sans-serif">Mobile</font></div> </td> <td colspan="2" width="84%"> <input type="text" name="mobile" size="45" maxlength="120"> </td> </tr> <tr> <td width="16%"> <div align="left"><font size="2" face="Arial, Helvetica, sans-serif">Sujet</font></div> </td> <td colspan="2" width="84%"> <input type="text" name="objet" size="45" maxlength="120" value="Commande"> </td> </tr> <tr> <td width="16%">&nbsp;</td> <td colspan="2" width="84%"> <textarea type="text" name="message" rows="10" cols="80"></textarea> </td> </tr> <tr> <td width="16%">&nbsp;</td> <td colspan="2" width="84%"> <input type="submit" name="Submit2" value="Envoyer"> <input type="reset" name="Submit" value="Réinitialiser le formulaire"> </td> </tr> </form> </table> </body> </html>

Code : Tout sélectionner

Page envoi.php <?php $nom=$HTTP_POST_VARS['nom']; $prenom=$HTTP_POST_VARS['prenom']; $adresse=$HTTP_POST_VARS['adresse']; $code_postal=$HTTP_POST_VARS['code_postal']; $ville=$HTTP_POST_VARS['ville']; $mail=$HTTP-POST_VARS['mail']; $telephone=&HTTP_POST_VARS['telephone']; $fax=$HTTP_POST_VARS['fax']; $mobile=$HTTP_POST_VARS['mobile']; $objet=$HTTP_POST_VARS['objet']; $message=&HTTP_POST_VARS['message']; /////Version Mine $headers = "MIME-Version: 1.0\r\n"; //////Détermine le mail en format text $headers .= "Content-type: text/plain; charset=iso-8859-1\r\n"; ////Détermine l'expediteur et l'adresse de réponse $headers .= "From: $nom <$mail>\r\nReply-to : $nom <$mail>\nX-Mailer:PHP"; $subject="$objet"; $destinataire="[email protected]"; /// Adresse qui reçoit le mail $body="$nom + '<br>' + $prenom + '<br>' + $adresse + '<br>' + $code_postal + '<br>' + $ville + '<br>' + $mail + '<br>' + $telephone + '<br>' + $fax '<br>' + $mobile + '<br>' + '<br> ' + $message"; ///// Ecriture du corp du mail if (mail($destinataire,$subject,$body,$headers)) { echo "Votre mail a été envoyé"; } else { echo "Une erreur s'est produite"; } ?>
Voila, je me suis basé pour ce script sur une version dejâ existante mais qui ne me permettait pas de gérer toutes ces imformations dans le corp du mail, j'ai donc du modifier pas mal de choses, en espérant ne pas avoir fait de bêtise, si vous pouviez m'éclairer sur la question... Merci infiniment.