Aller au contenu

Problème de syntaxe avec stripslashe


Sujets conseillés

Posté

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

Posté (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é par TheRec
Posté

:huh: 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

Posté

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]

Posté

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 .

Posté (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é par petit-ourson
Posté

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.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...