Version complète: sur le forum Webmaster Hub : Problème de syntaxe avec stripslashe
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
diabolo
Bonjour à tous,

Voilà j'ai un tout petit soucis dans ce bout de code

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 :
CODE
mail(addslashes "$resultat[email]", "$sujet", "$message\n\n$desin\n\n$copyright", "$de");


Me donne :

CODE
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
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 :
CODE
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 wink.gif

Bonne continuation !

PS: J'ai enlever les " supplémentaires entourant les variable ("$de" , par exemple, est devenu $de) , ce n'est pas nécessaire.
diabolo
Merci pour ta réponse !

Seulement voilà je recoit pas les e-mail. Aucune erreur de n'affiche !

diabolo
diabolo
huh.gif Sa ne fonctionne toujours pas !

J'ai essayé avec ceci :
CODE
mail(addslashes("$resultat[email]"), "$sujet", "$message\n\n$desin\n\n$copyright", "$de");


et puis avec ceci
CODE
mail(stripslashes("$resultat[email]"), "$sujet", "$message\n\n$desin\n\n$copyright", "$de");


diabolo
NorSeb
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 :
CODE
mail(stripslashes("$resultat[email]"), "$sujet", "$message\n\n$desin\n\n$copyright", "$de");


Donc le code correct serait :

CODE
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 wink.gif [/edit]
TheRec
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 :
CODE
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
CITATION(TheRec @ vendredi 10 février 2006, 11h06)
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.

CITATION(TheRec @ vendredi 10 février 2006, 11h06)
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.
TheRec
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.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.