Prob d'envoi de fomulaire

[Résolu]
Signaler
Messages postés
24
Date d'inscription
vendredi 17 mars 2006
Statut
Membre
Dernière intervention
25 juin 2006
-
Messages postés
24
Date d'inscription
vendredi 17 mars 2006
Statut
Membre
Dernière intervention
25 juin 2006
-
Bonjour!
Pourriez vous me dire ce qui cloche dans ce code? il parrait archer à l'execption près que l'envoi ne s'effectue pas...lol

<? // Exemple d'envoi de formulaire


// Interface PHP pour mail()
function sendMail($mFrom,$mTo,$sujet,$body) {
 // l'émetteur
 $tete = "From: ".$mFrom."\n";
 $tete .= "Reply-To: ".$mFrom."\n";
 // et zou... false si erreur d'émission
 return mail($mTo,$sujet,$body,$tete);
}


?><HTML><HEAD>
 <TITLE>Exemple</TITLE>
</HEAD><center>


<? // SI LE FORM A ETE POSTE
if(!empty($_POST["Email"])) {


 // Récupère les éléments du form
 $temp="";
 while (list($truc, $val) = each($HTTP_POST_VARS))
  $temp .= $truc." : ".$val."\n\n";
 // Caractères spéciaux
 $temp = stripslashes($temp);


 // Envoie le message
 // L'émetteur est aussi le récepteur dans cet exemple !
 if(@sendmail($_POST["Email"],$_POST["Email"],"Test SendForm",$temp)) {
  // Affiche un message de confirmation
  echo "Le formulaire a bien été envoyé à ".$_POST["Email"]." !";
 } else {
  // ou un message d'erreur
  echo "Impossible d'envoyer le formulaire !";
 }


// SINON AFFICHAGE DU FORM
} else { ?>
 <script language ="JavaScript">
  // Teste si le mail a une forme correcte
  function checkmail(email) {
   var reg = /^[a-z0-9._-]+@[a-z0-9.-]{2,}[.][a-z]{2,4}$/
   return (reg.exec(email)!=null)
  }
  // Teste le contenu des champs du form avant submit
  function test(nom,mail) {
   if(nom.value=="") {
    alert("Indiquez votre nom !"); nom.focus(); return false;
   } else if(!checkmail(mail.value)) {
    alert("Email incorrect !"); mail.focus(); return false;
   }
   return true;
  }
 </script>
 <form method=\"post\" onsubmit=\"return test(this.Nom,this.Email)\">
  ----

   Nom
,
   Email
,
  ----

   Message

    <textarea wrap=virtual rows=5 cols=35 name="Message"></textarea>,
  ----

   Sexe
    M
    F,
   Pays
    <select name="Pays">
     <option>France</option>
     <option>Belgique</option>
     <option>Suisse</option>
     <option>Autre</option>
    </select>,
  ----

       
     Recevoir la newsletter,
  ----

       ">
    ,
  
 </form>

<? } ?>
<? print (Date("l F d, Y")); ?>
</HTML>

30 réponses

Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
Ahhhh, faut configurer ton serveur localhost pour les emails :D

<hr style="width: 100%; height: 2px;" />Si ma reponse te convient, merci de l'accepter !
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
Euh ... faut ouvrir le ficher de configuration de ton logiciel Php (Apache, EasyPhp, Wamp5 ...)

Et trouver les lignes

SMTP = smtp.free.fr
; for win32 only

; For Win32 only. l'adresse e-mail qui apparaitra dans le message envoyé
sendmail_from = mon.nom@free.fr ;for win32 only

; For Unix only. à configurer seulement si utilisé unix ou linux
;sendmail_path = mon.nom@free.fr ;

tout en modifiant ce qui doit l'être

 Free, smtp.free.fr, ----
Magic Online, smtp.magic.fr, ----
Club-Internet, mail.club-internet.fr, ----
BD Way, mail.bdway.com, ----
Wanadoo, smtp.wanadoo.fr, ----
Easynet, smtp.easynet.fr, ----
France Explorer, smtp.9online.fr, ----
CompuServ, smtp.compuserv.com, ----
ClaraNet, smtp.claranet.fr

<hr style="width: 100%; height: 2px;" />Si ma reponse te convient, merci de l'accepter !
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
^^

Faut verifier dans ta fonction

mail ( string to, string subject, string message [, string additional_headers [, string additional_parameters]] )

Ensuite pour ton REMOTE_ADDR, c'est $_SERVER['REMOTE_ADDR'];

<hr style="width: 100%; height: 2px;" />Si ma reponse te convient, merci de l'accepter !
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
if(@sendmail($_POST['Email'], 'ton_adrese@email.com', 'Test', $temp)) {

:D Essaye ;)
<hr style="width: 100%; height: 2px;" />Si ma reponse te convient, merci de l'accepter !
Messages postés
214
Date d'inscription
lundi 20 mars 2006
Statut
Membre
Dernière intervention
23 juin 2006

Bah je n'ai pas lu tout le code, mais tu n'as pas d'action dans ta balise form, donc c'est peut etre dû à cela...
Messages postés
24
Date d'inscription
vendredi 17 mars 2006
Statut
Membre
Dernière intervention
25 juin 2006

pas bête...mais est ce que ça peut pas être "sendmail" l'action en question? : function sendMail($mFrom,$mTo,$sujet,$body) {
Sinon, il fo mettre quoi?

Merci beuacoup!
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
Salut,
Voici le code plus aux normes :

<?php // Exemple d'envoi de formulaire

// Interface PHP pour mail()
function sendMail($mFrom,$mTo,$sujet,$body) {
 // l'émetteur
 $tete  = 'From: ' . $mFrom . "\n";
 $tete .= 'Reply-To: ' . $mFrom . "\n";
 // et zou... false si erreur d'émission
 return mail($mTo,$sujet,$body,$tete);
}

?><HTML><HEAD>
 <TITLE>Exemple</TITLE>
</HEAD><center>

<?php // SI LE FORM A ETE POSTE
if(!empty($_POST['Email'])) {

 // Récupère les éléments du form
 $temp='';
 while (list($truc, $val) = each($_POST))
  $temp .= $truc . ' : ' . $val . "\n\n";
 // Caractères spéciaux
 $temp = stripslashes($temp);

 // Envoie le message
 // L'émetteur est aussi le récepteur dans cet exemple !
 if(@sendmail($_POST['Email'],$_POST['Email'], 'Test SendForm',$temp)) {
  // Affiche un message de confirmation
  echo 'Le formulaire a bien été envoyé à ', htmlentities($_POST['Email']), '<gras></gras> !';
 } else {
  // ou un message d'erreur
  echo 'Impossible d\'envoyer le formulaire !';
 }

// SINON AFFICHAGE DU FORM
} else { ?>
 <script language ="text/JavaScript">
  // Teste si le mail a une forme correcte
  function checkmail(email) {
   var reg = /^[a-z0-9._-]+@[a-z0-9.-]{2,}[.][a-z]{2,4}$/
   return (reg.exec(email)!=null)
  }
  // Teste le contenu des champs du form avant submit
  function test(nom,mail) {
   if(nom.value=='') {
    alert('Indiquez votre nom !'); nom.focus(); return false;
   } else if(!checkmail(mail.value)) {
    alert('Email incorrect !'); mail.focus(); return false;
   }
   return true;
  }
 </script>
 <form action=\"<?php echo $_SERVER['PHP_SELF']; ?>\" method =\"post\" onsubmit=\"return test(this.Nom,this.Email)\">
  ----

   Nom
,
   Email
,
  ----

   Message

    <textarea wrap="virtual" rows=5 cols=35 name="Message"></textarea>,
  ----

   Sexe
    />M
    />F,
   Pays
    <select name="Pays">
     <option>France</option>
     <option>Belgique</option>
     <option>Suisse</option>
     <option>Autre</option>
    </select>,
  ----

       />
     Recevoir la newsletter,
  ----

   />
    " />
    />,
 
 </form>

<?php }

echo Date('l F d, Y');

?>
</HTML>

Sinon, verifi coté javascript ...
<hr style="width: 100%; height: 2px;" />Si ma reponse te convient, merci de l'accepter !
Messages postés
24
Date d'inscription
vendredi 17 mars 2006
Statut
Membre
Dernière intervention
25 juin 2006

J'aurais tellement voulu accepter ta réponse (qui avait l'air top!)
mais il me marque toujours : impossible d'envoyer le formulaire!
tu crois que ça vient forcément du code?
Messages postés
214
Date d'inscription
lundi 20 mars 2006
Statut
Membre
Dernière intervention
23 juin 2006

Je suis d'accord avec JoJo738, mais dans ce cas, il faut faire gaffe, car parfois $_SERVER['PHP_SELF'] ne renvoie pas la page désirée selon si cette page est inclue ou non. Si son code ne marche pas, remplace le par le nom de ta page contenant le formulaire.
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
Enleve le @ à l'appel de ta fontion pour voir l'erreur reportée :p

<hr style="width: 100%; height: 2px;" />Si ma reponse te convient, merci de l'accepter !
Messages postés
24
Date d'inscription
vendredi 17 mars 2006
Statut
Membre
Dernière intervention
25 juin 2006

Hum....
voici la rep :
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:\documents and settings\administrator\mes documents\sophie\master2\www\index.php on line 9
Impossible d'envoyer le formulaire !Wednesday June 07, 2006

Kézako?
Messages postés
24
Date d'inscription
vendredi 17 mars 2006
Statut
Membre
Dernière intervention
25 juin 2006

 comment fo faire....en détail...(désolée de t'enquiquiner...mais jsuis débutante...snif)
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
Euh, faut modifier le php.ini

Par exemple :
For Win32 only. paramètre du serveur smtp de votre fournisseur d'accès
SMTP = smtp.free.fr ;for win32 only

; For Win32 only. l'adresse e-mail qui apparaitra dans le message envoyé
sendmail_from = mon.nom@free.fr ;for win32 only

; For Unix only. à configurer seulement si utilisé unix ou linux
;sendmail_path = mon.nom@free.fr ;

A modifier, je sais plus comment ^^ Et verifie que ton port 80 est ouvert
<hr style="width: 100%; height: 2px;" />Si ma reponse te convient, merci de l'accepter !
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
AHHHH message non posté !!!! bug intnernet ...

Donc, bah, faut modifier le php.ini (smtp) et verifier que ton port pour les mails est ouvert ( Pare feu )

Par exemple :


[mail function]


; For Win32 only.


;SMTP = localhost


SMTP = smtp.wanadoo.fr


smtp_port = 25


; For Win32 only.


sendmail_from = [mailto:me@example.com me@example.com]

Mais la, c'est pour Wanadoo ^^

<hr style="width: 100%; height: 2px;" />Si ma reponse te convient, merci de l'accepter !
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
Admin ... lol, j'aime pas les multis pages ... mdr !!!!!!!!

malalam ... tu peux suppr le message precedent et celui là ????

<hr style="width: 100%; height: 2px;" />Si ma reponse te convient, merci de l'accepter !
Messages postés
24
Date d'inscription
vendredi 17 mars 2006
Statut
Membre
Dernière intervention
25 juin 2006

Je peux pas supprimer de messages...? si oui, dis moi comment on fait...

Mais c quoi le blem? c fo ce que tu m'as dis? tu sais pour moi c du chinois tout ça.... j'en peux plus.....jen ai marrrrrrrrr.... c vraiment pas mon truc le multimédia....pfff....(désolée pour ce passage)

Bon ,je fais quoi?....
Messages postés
24
Date d'inscription
vendredi 17 mars 2006
Statut
Membre
Dernière intervention
25 juin 2006

JE TAIMEEEEEEEEEEE lollllll

ça a marchéééééééé !!!!!! Un gran, un énorme merci! tu mas sauvé la vie!!!!!

juste un dernier truc, voilà ce qui s'affiche dans le mail reçu :
Nom : ggggg

Email : a.rico1@caramail.com

Message : fffdf

Sexe : Homme

Pays : France

IP :

Notice:  Undefined variable:  REMOTE_ADDR in c:documents and
settingsadministratormes documentssophiemaster2wwwindex.php on line
78

De plus, c'est pas moi qui le reçois, mais l'internaute! lol
bizrrare?
Messages postés
24
Date d'inscription
vendredi 17 mars 2006
Statut
Membre
Dernière intervention
25 juin 2006

Ok, c bon pour le bug!

Mais reste à eclaircir ce point : pour il l'envoi à "l'internaute" ([mailto:a.rico1@caramail.com a.rico1@caramail.com]) et pas à moi? ([mailto:sophie.perrier6@wanadoo.fr sophie.perrier6@wanadoo.fr]) il fait l'inverse.... meme s'il dit bien que le message provient de a.rico1@....
et l'IP, est-ce nécéssaire finalement?
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
Euh, ta inversé l'expediteur et le destinataire, non ?
L'ip, tout depend de toi et ce que tu veux faire

<hr style="width: 100%; height: 2px;" />Si ma reponse te convient, merci de l'accepter !
Messages postés
24
Date d'inscription
vendredi 17 mars 2006
Statut
Membre
Dernière intervention
25 juin 2006

ça fait 20 minutes que j'essai plein de manip pour cette histoire d'inversion mais rien n'y fait! tu vois ou est le bug toi? merci....;