diabolo Posté 10 Février 2006 Posté 10 Février 2006 Bonjour à tous, Voilà j'ai un tout petit soucis dans ce bout de code mail("$resultat[email]", "$sujet", "$message\n\n$desin\n\n$copyright", "$de"); En effet celui-ci est censé récuperer les données d'un formulaire et les envoyer par e-mail à des adhérents. Jusque là pas de soucis sauf que l'e-mail est bourré d'anti-slashe. Faut donc rajouter la fonction addslashe. Comme par exemple : echo addslashes($str); Ceci : mail(addslashes "$resultat[email]", "$sujet", "$message\n\n$desin\n\n$copyright", "$de"); Me donne : Parse error: syntax error, unexpected '"' in /home/fmc/www/newsletter/envoyermail.php on line 81 Donc c'est pas la bonne syntaxe ! Quelqu'un peux m'aider je débute en php Merci, diabolo
TheRec Posté 10 Février 2006 Posté 10 Février 2006 (modifié) Bonjour, addslashes est une fonction, au même titre que mail. Pour lui passer des paramètres, il faut les mettre entre parenthèses. La syntaxe est : mail(addslashes($resultat[email]), $sujet, $message."\n\n".$desin."\n\n".$copyright, $de); L'interpréteur te le dit bien, il n'attends pas un '"' juste après addslahses Bonne continuation ! PS: J'ai enlever les " supplémentaires entourant les variable ("$de" , par exemple, est devenu $de) , ce n'est pas nécessaire. Modifié 10 Février 2006 par TheRec
diabolo Posté 10 Février 2006 Auteur Posté 10 Février 2006 Merci pour ta réponse ! Seulement voilà je recoit pas les e-mail. Aucune erreur de n'affiche ! diabolo
diabolo Posté 10 Février 2006 Auteur Posté 10 Février 2006 Sa ne fonctionne toujours pas ! J'ai essayé avec ceci : mail(addslashes("$resultat[email]"), "$sujet", "$message\n\n$desin\n\n$copyright", "$de"); et puis avec ceci mail(stripslashes("$resultat[email]"), "$sujet", "$message\n\n$desin\n\n$copyright", "$de"); diabolo
NorSeb Posté 10 Février 2006 Posté 10 Février 2006 Bonjour, Si c'est l'adresse email qui bourrée d'anti-slash je ne vois pas bien quelle tête elle a. Si c'est le texte du message qui en comporte, il faut que tu fasse porter la fonction sur le message en lui-même et non sur l'adresse comme dans le code ci-dessous : mail(stripslashes("$resultat[email]"), "$sujet", "$message\n\n$desin\n\n$copyright", "$de"); Donc le code correct serait : mail("$resultat[email]", "$sujet", stripslashes($message\n\n$desin\n\n$copyright), "$de"); [edit]Par ailleurs, il me semble important de parcourir quelques sites et autres livres pour débutant afin d'en apprendre un minimum sur la syntaxe php [/edit]
TheRec Posté 10 Février 2006 Posté 10 Février 2006 C'est plutôt stripslashes si ton $resultat vient d'une base de données. Conernant la réception de l'e-mail, cela dépend de la configuration de ton serveur. Je suppose que tu utilises EasyPHP (comme la majorité des néophytes en PHP). Tu dois configurer un serveur SMTP valide dans le fichier httpd.conf de Apache et également regarder . Pour savoir si la commande mail à pu s'exécuter correctement (un mail peu ne pas arriver même si elle se tzermine correctement, par exemple un adresse e-mail erronée) tu peux procéder comme ceci : if(mail(stripslashes($resultat[email]), $sujet, $message."\n\n".$desin."\n\n".$copyright, $de)) { echo "Mail envoyé";} else { echo "Erreur";} Ceci est possible car la fonction "mail" renvoie un booléen (true ou false) une fois exécutée. Malheureusement elle ne permet pas de diagnostique plus approfondi (Serveur inatteignable, ...). Une autre pise serait que tes headers sont mal formé et que cela empêche on e-mail de partir. Regarde dans le manuel de PHP pour la syntaxe des enêtes ($de), surtout fait attention au fin de lignes dans les en-têtes c'est \r\n et non juste \n .
petit-ourson Posté 10 Février 2006 Posté 10 Février 2006 (modifié) C'est plutôt stripslashes si ton $resultat vient d'une base de données. J'ai toujours du mal à comprendre, pourquoi les données sont jamais "clair" dans une base de données. Conernant la réception de l'e-mail, cela dépend de la configuration de ton serveur. Je suppose que tu utilises EasyPHP (comme la majorité des néophytes en PHP). Tu dois configurer un serveur SMTP valide dans le fichier httpd.conf de Apache et également regarder . Cela se trouve dans le php.ini plutôt il me semble. Modifié 10 Février 2006 par petit-ourson
TheRec Posté 10 Février 2006 Posté 10 Février 2006 C'est juste... ce sont des directives de php.ini. Au sujet de addslashes/magic_quotes, ..., les réponses se trouvent ici : http://frederic.bouchery.free.fr/?2005/02/...rophes-magiques Il se trouve que l'apostophe (entre autres) est un caractère utilisé par PHP lors de l'interprétation. On l'utilise pour délimiter une chaîne de caractères, donc si on attribue à une variable une valeur comportant ce caractère sans l'échappper (avec un anti-slash: \ ) cela posera des problème à l'interpréteur.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant