Les echo ne fonctionnent pas correctement
Résolu/Fermé
fabrice11901
Messages postés
787
Date d'inscription
dimanche 31 juillet 2005
Statut
Membre
Dernière intervention
12 juillet 2007
-
24 févr. 2006 à 13:12
Thom@s Messages postés 3412 Date d'inscription mardi 4 mars 2003 Statut Modérateur Dernière intervention 28 septembre 2019 - 25 févr. 2006 à 15:56
Thom@s Messages postés 3412 Date d'inscription mardi 4 mars 2003 Statut Modérateur Dernière intervention 28 septembre 2019 - 25 févr. 2006 à 15:56
A voir également:
- Les echo ne fonctionnent pas correctement
- La page n’est pas redirigée correctement ✓ - Forum Mozilla Firefox
- Echo retour à la ligne ✓ - Forum Shell
- Un cable ethernet n'est pas branché correctement ou est endommagé ✓ - Forum Windows 7
- Echo lors d'un appel samsung - Forum Samsung
- @Echo off ✓ - Forum Programmation
10 réponses
B@|-|@N
Messages postés
386
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
7 décembre 2007
62
24 févr. 2006 à 17:11
24 févr. 2006 à 17:11
Y a pas un petit soucis slon dans ton code php, au niveau de tes isset ?
Tu testes si tes variables ont été enregistrées en temps que variables de session, or elles ne le sont pas il me semble, puisque elles sont envoyés par formulaire. Elles sont juste contenues dans le tableau $_POST.
Juste par curiosité, fais un "echo($mail);" pour voir la valeur de la variable.
Bahan
Tu testes si tes variables ont été enregistrées en temps que variables de session, or elles ne le sont pas il me semble, puisque elles sont envoyés par formulaire. Elles sont juste contenues dans le tableau $_POST.
Juste par curiosité, fais un "echo($mail);" pour voir la valeur de la variable.
Bahan
Thom@s
Messages postés
3412
Date d'inscription
mardi 4 mars 2003
Statut
Modérateur
Dernière intervention
28 septembre 2019
678
24 févr. 2006 à 16:38
24 févr. 2006 à 16:38
Salut !
Je n'ai pas le code de la page du formulaire qui envoie sur la page PHP, mais, à priori, deux remarques :
1°) Il faudrait mettre des guillemets (simples (apostrophes) ou doubles) à "oui" et "non", ce qui donne :
A mon avis, ton problème vient de là.
En temps normal, PHP t'afficherait pour ça une erreur, mais si tu n'en as pas, c'est que l'affichage des erreurs doit être désactivé (soit par ton hébergeur, soit par toi).
En effet, "oui" et "non" sont des chaînes de caractères (strings), au même titre que n'importe quel autre texte.
C'est pour ça qu'il faut des guillements (" ou ').
Les seuls cas où on n'a pas besoin de guillemets sont les nombres et les booléens (TRUE ou FALSE).
2°) Remarque subsidiaire :
Le <title>Untitled Document</title> est-il vraiment indispensable (!) ? ;-)
3°) Il faudrait que tu (ré)actives l'affichage des erreurs PHP, sans quoi à la moindre erreur, ça t'affichera une page (semi-)blanche, ou bien, comme ici, ça ne marchera simplement pas, et tu te demanderas d'où vient le probème (on peut chercher longtemps...).
Pour cela, met ce code au début de (toutes) tes pages :
error_reporting(E_ALL | E_STRICT);
Bien sûr, le mieux est de le faire par un include(). Comme ça, quand tu as (provisoirement) fini de développer ton site, tu commentes la ligne: de cette façon, les visiteurs ne verront aucune erreur.
A+ :-)
Je n'ai pas le code de la page du formulaire qui envoie sur la page PHP, mais, à priori, deux remarques :
1°) Il faudrait mettre des guillemets (simples (apostrophes) ou doubles) à "oui" et "non", ce qui donne :
if ($mail == 'oui') { echo "ok on t'envois un mail"; } elseif ($mail == 'non') { echo "tu ne recevra pas de mail !"; } ?>
A mon avis, ton problème vient de là.
En temps normal, PHP t'afficherait pour ça une erreur, mais si tu n'en as pas, c'est que l'affichage des erreurs doit être désactivé (soit par ton hébergeur, soit par toi).
En effet, "oui" et "non" sont des chaînes de caractères (strings), au même titre que n'importe quel autre texte.
C'est pour ça qu'il faut des guillements (" ou ').
Les seuls cas où on n'a pas besoin de guillemets sont les nombres et les booléens (TRUE ou FALSE).
2°) Remarque subsidiaire :
Le <title>Untitled Document</title> est-il vraiment indispensable (!) ? ;-)
3°) Il faudrait que tu (ré)actives l'affichage des erreurs PHP, sans quoi à la moindre erreur, ça t'affichera une page (semi-)blanche, ou bien, comme ici, ça ne marchera simplement pas, et tu te demanderas d'où vient le probème (on peut chercher longtemps...).
Pour cela, met ce code au début de (toutes) tes pages :
error_reporting(E_ALL | E_STRICT);
Bien sûr, le mieux est de le faire par un include(). Comme ça, quand tu as (provisoirement) fini de développer ton site, tu commentes la ligne: de cette façon, les visiteurs ne verront aucune erreur.
A+ :-)
fabrice11901
Messages postés
787
Date d'inscription
dimanche 31 juillet 2005
Statut
Membre
Dernière intervention
12 juillet 2007
64
24 févr. 2006 à 17:03
24 févr. 2006 à 17:03
Salut
Merci de m'aider.
J'ai fais comme tu m'as dis mettre oui et non entre ' mais le problème est le même je te redonne le code php avec les ' ainsi que le code de mon formulaire html (il faut remplir la réponse soit oui soit non car ce n'est que pour tester. Mais ce qui est bizarre c'est que si je met le code php pour vérifier si oui ou non ça fonctionne c'est dans l'autre code php là ou on inscrit le membre que ça marche pas !
voici le formulaire html :
et le code php :
Merci de m'aider.
J'ai fais comme tu m'as dis mettre oui et non entre ' mais le problème est le même je te redonne le code php avec les ' ainsi que le code de mon formulaire html (il faut remplir la réponse soit oui soit non car ce n'est que pour tester. Mais ce qui est bizarre c'est que si je met le code php pour vérifier si oui ou non ça fonctionne c'est dans l'autre code php là ou on inscrit le membre que ça marche pas !
voici le formulaire html :
<FORM method="POST" action="http://sons.gratuits.free.fr/v2/code1.php"> Pseudo :<INPUT TYPE="text" name="pseudo"> <br> Passe : <INPUT TYPE="password" name="passe"> <br> Adresse mail : <INPUT TYPE="text" name="adresse"><br> Reponse :<INPUT TYPE="text" name="mail"> <br> <INPUT TYPE="submit" value="inscription !"> </form>
et le code php :
<? $dbc = @mysql_connect ("sql.free.fr", "sons.gratuits", "*****"); if(!mysql_errno($dbc)) { mysql_select_db("sons_gratuits"); if ( isset($_POST['pseudo'])) $pseudo=$_POST['pseudo']; if ( isset($_POST['passe']) ) $passe=$_POST['passe']; if ( isset($_POST['adresse'])) $adresse=$_POST['adresse']; if ($pseudo && $passe && $adresse) { echo '<html> <head> <title>Untitled Document</title> </head> <body>'; $requete1 = "insert into v2 values( '' , ' ".$pseudo." ' , ' ".$passe." ' , ' ".$adresse." ')"; mysql_query($requete1); echo 'Bravo ! </body> </html>'; } else { echo '<html><head><META HTTP-EQUIV="Refresh" CONTENT="5; URL=http://sons.gratuits.free.fr/formulaire.php"></head>'; echo '<body>Merci de remplir tous les champs</body>'; }} mysql_close(); $mail=$_POST['mail']; if ($mail == 'oui') { echo "ok on t'envois un mail"; } elseif ($mail == 'non') { echo "tu ne recevra pas de mail !"; } ?>
fabrice11901
Messages postés
787
Date d'inscription
dimanche 31 juillet 2005
Statut
Membre
Dernière intervention
12 juillet 2007
64
24 févr. 2006 à 17:33
24 févr. 2006 à 17:33
re,
Je ne sais pas d'ou tu vois qu'il y a des sessions les variables arrivent bien sous forme de post et non pas sous forme de $_session !
merci
Je ne sais pas d'ou tu vois qu'il y a des sessions les variables arrivent bien sous forme de post et non pas sous forme de $_session !
merci
B@|-|@N
Messages postés
386
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
7 décembre 2007
62
24 févr. 2006 à 17:43
24 févr. 2006 à 17:43
Pas grave.
Quelle valeur te donne le print($email); ?
Bahan
Quelle valeur te donne le print($email); ?
Bahan
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
fabrice11901
Messages postés
787
Date d'inscription
dimanche 31 juillet 2005
Statut
Membre
Dernière intervention
12 juillet 2007
64
24 févr. 2006 à 18:14
24 févr. 2006 à 18:14
re
si je fais ce code php :
le print ne me donne rien. J'essaye de faire un echo dessus?
merci
si je fais ce code php :
<? $dbc = @mysql_connect ("sql.free.fr", "sons.gratuits", "*****"); if(!mysql_errno($dbc)) { mysql_select_db("sons_gratuits"); if ( isset($_POST['pseudo'])) $pseudo=$_POST['pseudo']; if ( isset($_POST['passe']) ) $passe=$_POST['passe']; if ( isset($_POST['adresse'])) $adresse=$_POST['adresse']; if ($pseudo && $passe && $adresse) { echo '<html> <head> <title>Untitled Document</title> </head> <body>'; $requete1 = "insert into v2 values( '' , ' ".$pseudo." ' , ' ".$passe." ' , ' ".$adresse." ')"; mysql_query($requete1); echo 'Bravo ! </body> </html>'; } else { echo '<html><head><META HTTP-EQUIV="Refresh" CONTENT="5; URL=http://sons.gratuits.free.fr/formulaire.php"></head>'; echo '<body>Merci de remplir tous les champs</body>'; }} mysql_close(); $mail=$_POST['mail']; if ($mail == 'oui') { echo "ok on t'envois un mail"; } elseif ($mail == 'non') { echo "tu ne recevra pas de mail !"; } print($mail); ?>
le print ne me donne rien. J'essaye de faire un echo dessus?
merci
Thom@s
Messages postés
3412
Date d'inscription
mardi 4 mars 2003
Statut
Modérateur
Dernière intervention
28 septembre 2019
678
24 févr. 2006 à 18:22
24 févr. 2006 à 18:22
Re,
1) Essaie de remplacer <INPUT TYPE="text" name="mail"> par :
3) Voilà donc les deux codes modifiés (testés (sans SQL)), qui devraient marcher :
Page 1 :
Page 2 :
Tu peux tester toi-même, à cette adresse :-)
http://freethomas.net/temp/form_test_page1.php
Si ça ne marche toujours pas, essaie d'activer l'affichage des erreurs, et de nous dire quelle erreur s'affiche: ce sera plus simple :-)
A+ :-)
1) Essaie de remplacer <INPUT TYPE="text" name="mail"> par :
<input type="checkbox" name="mail" value="1">Cocher la case pour recevoir des e-mails.
3) Voilà donc les deux codes modifiés (testés (sans SQL)), qui devraient marcher :
Page 1 :
<FORM method="POST" action="http://sons.gratuits.free.fr/v2/code1.php"> Pseudo :<INPUT TYPE="text" name="pseudo"> <br> Passe : <INPUT TYPE="password" name="passe"><br> Adresse mail : <INPUT TYPE="text" name="adresse"><br> <input type="checkbox" name="mail" value="1">Cocher la case pour recevoir des e-mails.<br> <INPUT TYPE="submit" value="inscription !"> </form>
Page 2 :
<? $dbc = @mysql_connect ("sql.free.fr", "sons.gratuits", "*****"); if(!mysql_errno($dbc)) { mysql_select_db("sons_gratuits"); if ( isset($_POST['pseudo'])) { $pseudo=$_POST['pseudo']; } if ( isset($_POST['passe'])) { $passe=$_POST['passe']; } if ( isset($_POST['adresse'])) { $adresse=$_POST['adresse']; } if ($pseudo && $passe && $adresse) { echo '<html> <head> </head> <body>'; $requete1 = "insert into v2 values( '' , ' ".$pseudo." ' , ' ".$passe." ' , ' ".$adresse." ')"; mysql_query($requete1); echo 'Bravo ! </body> </html>'; } else { echo '<html><head><META HTTP-EQUIV="Refresh" CONTENT="5; URL=http://sons.gratuits.free.fr/formulaire.php"></head>'; echo '<body>Merci de remplir tous les champs</body>'; } } mysql_close(); $mail=$_POST['mail']; if ($mail == '1') { echo "<p>ok on t'envoie un mail</p>"; } else { echo "<p>tu ne recevras pas de mail !</p>"; } ?>
Tu peux tester toi-même, à cette adresse :-)
http://freethomas.net/temp/form_test_page1.php
Si ça ne marche toujours pas, essaie d'activer l'affichage des erreurs, et de nous dire quelle erreur s'affiche: ce sera plus simple :-)
A+ :-)
fabrice11901
Messages postés
787
Date d'inscription
dimanche 31 juillet 2005
Statut
Membre
Dernière intervention
12 juillet 2007
64
24 févr. 2006 à 19:12
24 févr. 2006 à 19:12
Re !
Sa marche effectivement ! merci beaucoup !
Mais peux-tu m'expliquer pourquoi les {} sont présents dans les if isset au début de la page php?
Merci
Sa marche effectivement ! merci beaucoup !
Mais peux-tu m'expliquer pourquoi les {} sont présents dans les if isset au début de la page php?
Merci
Thom@s
Messages postés
3412
Date d'inscription
mardi 4 mars 2003
Statut
Modérateur
Dernière intervention
28 septembre 2019
678
24 févr. 2006 à 19:21
24 févr. 2006 à 19:21
Salut !
J'ai ajouté les accolades ({}) dans les "if" (je ne sais pas si ça aurait marché sans; sûrement que oui), car c'est pour moi un réflexe: je trouve que le code est ainsi plus lisible, plus clair, et surtout, on évite de nombreuses erreurs.
Surtout si on as besoin d'"if" imbriqués les uns dans les autres, si on ne met pas d'accolade, on s'y perd très facilement.
Par exemple, ici, ils n'utilisent pas du tout les "if" sans accolade ("raccourcis") :
http://www.lephpfacile.com/cours/index.php?p=7
De manière générale, je pense qu'il est bien de présenter les structures de contrôle (if, for, while...) de cette façon (en respectant) :
Ils est aussi dans la tradition de présenter comme ça (mais je n'aime pas trop; question de goût ;-) :
Mais ce n'est que mon avis personnel :)
A+
Bonne soirée ! :)
J'ai ajouté les accolades ({}) dans les "if" (je ne sais pas si ça aurait marché sans; sûrement que oui), car c'est pour moi un réflexe: je trouve que le code est ainsi plus lisible, plus clair, et surtout, on évite de nombreuses erreurs.
Surtout si on as besoin d'"if" imbriqués les uns dans les autres, si on ne met pas d'accolade, on s'y perd très facilement.
Par exemple, ici, ils n'utilisent pas du tout les "if" sans accolade ("raccourcis") :
http://www.lephpfacile.com/cours/index.php?p=7
De manière générale, je pense qu'il est bien de présenter les structures de contrôle (if, for, while...) de cette façon (en respectant) :
if (condition) { instruction_a_executer1(); instruction_a_executer2(); }
Ils est aussi dans la tradition de présenter comme ça (mais je n'aime pas trop; question de goût ;-) :
if (condition) { instruction_a_executer1(); instruction_a_executer2(); }
Mais ce n'est que mon avis personnel :)
A+
Bonne soirée ! :)
fabrice11901
Messages postés
787
Date d'inscription
dimanche 31 juillet 2005
Statut
Membre
Dernière intervention
12 juillet 2007
64
24 févr. 2006 à 19:35
24 févr. 2006 à 19:35
re,
Ok pour lex explications.
J'ai ajouté au script la fonction mail() mais y a un parce error à la ligne 39 l'ors du remplissage de l'adresse mail par la variable $adresse tu peux me geter un petit coup d'oeil?
Merci
code en entier :
merci beaucoup de ton aide
Ok pour lex explications.
J'ai ajouté au script la fonction mail() mais y a un parce error à la ligne 39 l'ors du remplissage de l'adresse mail par la variable $adresse tu peux me geter un petit coup d'oeil?
Merci
code en entier :
<? $dbc = @mysql_connect ("sql.free.fr", "sons.gratuits", "*****"); if(!mysql_errno($dbc)) { mysql_select_db("sons_gratuits"); if ( isset($_POST['pseudo'])) { $pseudo=$_POST['pseudo']; } if ( isset($_POST['passe'])) { $passe=$_POST['passe']; } if ( isset($_POST['adresse'])) { $adresse=$_POST['adresse']; } if ($pseudo && $passe && $adresse) { echo '<html> <head> </head> <body>'; $requete1 = "insert into v2 values( '' , ' ".$pseudo." ' , ' ".$passe." ' , ' ".$adresse." ')"; mysql_query($requete1); echo 'Bravo ! </body> </html>'; } else { echo '<html><head><META HTTP-EQUIV="Refresh" CONTENT="5; URL=http://sons.gratuits.free.fr/formulaire.php"></head>'; echo '<body>Merci de remplir tous les champs</body>'; } } mysql_close(); $mail=$_POST['mail']; if ($mail == '1') {mail("$adresse", " Confirmation d'inscription à sons.gratuits.free.fr", "Bonjour et merci pour votre inscription<br /> Vous avez demandé à recevoir par e-mail vos identifiants pour vous connecter au site sons.gratuits.free.fr <br /> Voici vos identifiants : <br /> Pseudo : ".$pseudo ." <br /> Mot de passe : " . $passe." <br/> Le webmaster vous souhaite une agréable visite sur sons.gratuits.free.fr !, "Content-type: text/html; charset=iso-8859-1"); } else { echo "<p>tu ne recevras pas de mail !</p>"; } ?>
merci beaucoup de ton aide
Thom@s
Messages postés
3412
Date d'inscription
mardi 4 mars 2003
Statut
Modérateur
Dernière intervention
28 septembre 2019
678
24 févr. 2006 à 19:47
24 févr. 2006 à 19:47
Salut !
A priori, tu as oublié de fermer les guillemets après Le webmaster vous souhaite une agréable visite sur sons.gratuits.free.fr !
Par contre, j'aurais deux petites remarques :
1°) Je trouve que ce serait mieux d'envoyer tes mails en texte brut, au lieu du HTML.
Pour cela, il suffit d'enlever Content-type: text/html;
Par contre, en texte brut, un passage à la ligne se fait par \r\n au lieu de <br>
2°) Il serait par contre bien d'ajouter, dans les headers, de qui vient le mail (From), et à qui il faut répondre (Reply-To).
Ce qui donne, au final, pour cette portion de code :
Par contre, attention à ne pas aller à la ligne dans les headers (donc, ne pas aller à la ligne après les \r\n).
A+ :-)
A priori, tu as oublié de fermer les guillemets après Le webmaster vous souhaite une agréable visite sur sons.gratuits.free.fr !
Par contre, j'aurais deux petites remarques :
1°) Je trouve que ce serait mieux d'envoyer tes mails en texte brut, au lieu du HTML.
Pour cela, il suffit d'enlever Content-type: text/html;
Par contre, en texte brut, un passage à la ligne se fait par \r\n au lieu de <br>
2°) Il serait par contre bien d'ajouter, dans les headers, de qui vient le mail (From), et à qui il faut répondre (Reply-To).
Ce qui donne, au final, pour cette portion de code :
Le webmaster vous souhaite une agréable visite sur sons.gratuits.free.fr !", "From: adresse@email.tld\r\nReply-To: adresse@email.tld\r\ncharset=iso-8859-1");
Par contre, attention à ne pas aller à la ligne dans les headers (donc, ne pas aller à la ligne après les \r\n).
A+ :-)
fabrice11901
Messages postés
787
Date d'inscription
dimanche 31 juillet 2005
Statut
Membre
Dernière intervention
12 juillet 2007
64
24 févr. 2006 à 21:04
24 févr. 2006 à 21:04
Re
Merci pour l'email c'est bon par contre j'ai essayer de mettre l'email en text brut mais quand on reçoit l'email voici ce que ça met :
il met les charsé... et on ne peux pas mettre juste le to : f.terrancle...?
merci je te redonne le code php tel qu'il fait ça dans l'email :
Merci pour l'email c'est bon par contre j'ai essayer de mettre l'email en text brut mais quand on reçoit l'email voici ce que ça met :
sons.gratuits.free.fr Reply-To: f.terrancle@free.fr charset=iso-8859-1 To: f.terrancle@free.fr Bonjour et merci pour votre inscription Vous avez demandé à recevoir par e-mail vos identifiants pour vous connecter au site sons.gratuits.free.fr Voici vos identifiants : Pseudo : fabrice11901 Mot de passe : fabrice11901 Le webmaster vous souhaite une agréable visite sur sons.gratuits.free.fr !
il met les charsé... et on ne peux pas mettre juste le to : f.terrancle...?
merci je te redonne le code php tel qu'il fait ça dans l'email :
<? $dbc = @mysql_connect ("sql.free.fr", "sons.gratuits", "*****"); if(!mysql_errno($dbc)) { mysql_select_db("sons_gratuits"); if ( isset($_POST['pseudo'])) { $pseudo=$_POST['pseudo']; } if ( isset($_POST['passe'])) { $passe=$_POST['passe']; } if ( isset($_POST['adresse'])) { $adresse=$_POST['adresse']; } if ($pseudo && $passe && $adresse) { echo '<html> <head> </head> <body>'; $requete1 = "insert into v2 values( '' , ' ".$pseudo." ' , ' ".$passe." ' , ' ".$adresse." ')"; mysql_query($requete1); echo 'Bravo ! </body> </html>'; } else { echo '<html><head><META HTTP-EQUIV="Refresh" CONTENT="5; URL=http://sons.gratuits.free.fr/formulaire.php"></head>'; echo '<body>Merci de remplir tous les champs</body>'; } } mysql_close(); $mail=$_POST['mail']; if ($mail == '1') {mail("$adresse", " Confirmation d'inscription à sons.gratuits.free.fr", "Bonjour et merci pour votre inscription\r\n Vous avez demandé à recevoir par e-mail vos identifiants pour vous connecter au site sons.gratuits.free.fr \r\n Voici vos identifiants : \r\n Pseudo : ".$pseudo ." \r\n Mot de passe : " . $passe." \r\n Le webmaster vous souhaite une agréable visite sur sons.gratuits.free.fr !", "From: sons.gratuits.free.fr\r\nReply-To: f.terrancle@free.fr\r\ncharset=iso-8859-1"); } else { echo "<p>tu ne recevras pas de mail !</p>"; } ?>
Thom@s
Messages postés
3412
Date d'inscription
mardi 4 mars 2003
Statut
Modérateur
Dernière intervention
28 septembre 2019
678
24 févr. 2006 à 22:58
24 févr. 2006 à 22:58
Re,
Si j'ai bien compris, dans le mail que l'on reçoit, les headers (en-têtes), (c'est-à-dire Reply-To, From, charset...) sont dans le corps du mail.
C'est, en tout cas, ce que j'ai effectivement obtenu en testant le code.
Je pense que ça vient des passages à la ligne présents dans le header et dans le sujet (objet du mail).
En fait, il ne faut jamais aller à la ligne dans le code :
- du header (en-têtes) (supprimer les passages à la ligne après From: et Reply-To:)
- su sujet (objet du mail) (supprimer le passage à la ligne entre le guillemet et "Confirmation d'inscription").
Le manuel officiel PHP dit à ce sujet :
Note : Assurez-vous qu'il n'y ait aucune nouvelle ligne (ou d'autres espaces ou caractères blancs) dans les paramètres to ou subject, car cela peut avoir des effets secondaires irrationnels.
Cf. http://www.lephpfacile.com/manual_php/function.mail.php
Par ailleurs, une remarque :
- Le "From" et le "Reply-To" doivent être des adresses e-mail, et non des URLs (adresses de sites www), comme c'est le cas ici pour le From.
Logiquement, le From et le Reply-To doivent être identiques, et tous deux être: f.terrancle@free.fr
Voici donc le code de la fonction mail(), modifié (testé) (attention à ne pas ajouter de sauts de ligne ni d'espaces inutiles, et, aussi, vérifier que votre logiciel d'édition HTML n'en ajoute pas) :
A+ :-)
Si j'ai bien compris, dans le mail que l'on reçoit, les headers (en-têtes), (c'est-à-dire Reply-To, From, charset...) sont dans le corps du mail.
C'est, en tout cas, ce que j'ai effectivement obtenu en testant le code.
Je pense que ça vient des passages à la ligne présents dans le header et dans le sujet (objet du mail).
En fait, il ne faut jamais aller à la ligne dans le code :
- du header (en-têtes) (supprimer les passages à la ligne après From: et Reply-To:)
- su sujet (objet du mail) (supprimer le passage à la ligne entre le guillemet et "Confirmation d'inscription").
Le manuel officiel PHP dit à ce sujet :
Note : Assurez-vous qu'il n'y ait aucune nouvelle ligne (ou d'autres espaces ou caractères blancs) dans les paramètres to ou subject, car cela peut avoir des effets secondaires irrationnels.
Cf. http://www.lephpfacile.com/manual_php/function.mail.php
Par ailleurs, une remarque :
- Le "From" et le "Reply-To" doivent être des adresses e-mail, et non des URLs (adresses de sites www), comme c'est le cas ici pour le From.
Logiquement, le From et le Reply-To doivent être identiques, et tous deux être: f.terrancle@free.fr
Voici donc le code de la fonction mail(), modifié (testé) (attention à ne pas ajouter de sauts de ligne ni d'espaces inutiles, et, aussi, vérifier que votre logiciel d'édition HTML n'en ajoute pas) :
mail($adresse, "Confirmation d'inscription à sons.gratuits.free.fr", "Bonjour et merci pour votre inscription\r\nVous avez demandé à recevoir par e-mail vos identifiants pour vous connecter au site sons.gratuits.free.fr\r\nVoici vos identifiants :\r\nPseudo : ".$pseudo ."\r\nMot de passe : ". $passe."\r\n". "Le webmaster vous souhaite une agréable visite sur sons.gratuits.free.fr !", "From:f.terrancle@free.fr\r\nReply-To:f.terrancle@free.fr");
A+ :-)
fabrice11901
Messages postés
787
Date d'inscription
dimanche 31 juillet 2005
Statut
Membre
Dernière intervention
12 juillet 2007
64
25 févr. 2006 à 08:30
25 févr. 2006 à 08:30
Salut
C'est bon tout marche !
Comme quoi ça marche au retour à la ligne près !
Pour info je n'utilise pas de logiciel html je code tout dans bloc note.
Merci beaucoup et a+
Fabrice
C'est bon tout marche !
Comme quoi ça marche au retour à la ligne près !
Pour info je n'utilise pas de logiciel html je code tout dans bloc note.
Merci beaucoup et a+
Fabrice
Thom@s
Messages postés
3412
Date d'inscription
mardi 4 mars 2003
Statut
Modérateur
Dernière intervention
28 septembre 2019
678
25 févr. 2006 à 15:56
25 févr. 2006 à 15:56
Salut !
Comme quoi ça marche au retour à la ligne près !
Eh oui, ce sont les mystères du PHP... ;-)
En fait, il y a quelques fonctions qui sont, comme mail(), sensibles aux retours à la ligne: c'est souvent une source d'erreur (ça m'est arrivé plusieurs fois aussi ;-)
Pour info je n'utilise pas de logiciel html je code tout dans bloc note.
Moi aussi, j'écris mes pages HTML/PHP "à la main", mais au lieu d'utiliser le bloc-notes, j'utilise un logiciel d'édition de code non-WYSIWYG (une sorte de bloc-notes très amélioré: coloration du code, auto-complétition, et plein d'autres fonction très pratiques) :
http://www.pspad.com/fr/
Recommandé par Sebsauvage ;-)
http://sebsauvage.net/logiciels/poweruser.html
C'est vraiment beaucoup plus pratique que le bloc-notes, et ça permet de trouver ses erreurs beaucoup plus facilement.
Par exemple, en positionnant le curseur sur une parenthèse ou une accolade ouvrante, par CTRL+M, on a automatiquement la fermante, etc.
La coloration syntaxique permet, elle aussi, d'éviter bien des erreurs :-)
Merci beaucoup
De rien :)
A+
Comme quoi ça marche au retour à la ligne près !
Eh oui, ce sont les mystères du PHP... ;-)
En fait, il y a quelques fonctions qui sont, comme mail(), sensibles aux retours à la ligne: c'est souvent une source d'erreur (ça m'est arrivé plusieurs fois aussi ;-)
Pour info je n'utilise pas de logiciel html je code tout dans bloc note.
Moi aussi, j'écris mes pages HTML/PHP "à la main", mais au lieu d'utiliser le bloc-notes, j'utilise un logiciel d'édition de code non-WYSIWYG (une sorte de bloc-notes très amélioré: coloration du code, auto-complétition, et plein d'autres fonction très pratiques) :
http://www.pspad.com/fr/
Recommandé par Sebsauvage ;-)
http://sebsauvage.net/logiciels/poweruser.html
C'est vraiment beaucoup plus pratique que le bloc-notes, et ça permet de trouver ses erreurs beaucoup plus facilement.
Par exemple, en positionnant le curseur sur une parenthèse ou une accolade ouvrante, par CTRL+M, on a automatiquement la fermante, etc.
La coloration syntaxique permet, elle aussi, d'éviter bien des erreurs :-)
Merci beaucoup
De rien :)
A+