pb apostrophes
le 31/05/2006 à 12:58
Keika
salut
pour une page de traduction en francais d'un site j'ai ca:
DEFINE('_THANKS','Merci d\'avoir voté. Pour voir les résultats, cliquez sur le bouton Résultats.');
Mais ca me renvois ca:
Merci d\\\'avoir voté. Pour voir les résultats, cliquez sur le bouton Résultats.
qui sait pourquoi et comment enlever les 3 \ ?
Merci d'avance.
K.
Le PHP --> C'est dur !
T'as du faire des addslashes ou des stripslashes dans tous les sens car un simple echo _THANKS n'affiche pas çà.
le 31/05/2006 à 15:59
Keika
euuu perso je n'ai rien fait.
J'ai voulu un peu personnaliser le fichier pour la traduction c'est tout.
Et c'est quoi addslashes et stripslashes ?
Le PHP --> C'est dur !
Salut Keika !
addslashes et stripslashes sont des fonctions qui permettent d'ajouter et de retirer des antislash (\) devant les apostrophes d'un texte que tu enregistre dans une base de donnée. Celà evite que ta requête soit coupée par un ' interprété par une fait de requête. Donc chaque fois que tu enregistre un texte, passe le en fonction. Par exemple:
addslashes($texte)
Et lorsque tu affiche un texte à partir d'un base de données utilise:
stripslashes('.data['texte'].') dans ta requête.
A oui dernière chose, ces fonctions sont des fonction gérée par MySQL et pas par PHP. Utilise les donc dans tes requêtes.
Addslashes / Stripslashes ne doivent jamais etre utilisé pour insérer des données en base de données mais juste pour récupérer les données d'un formulaire (et encore, cela depend de la configuration de PHP).
Pour protéger une chaine avant insertion en base, il y'a
mysql_escape_string (et rien à faire quand tu affiches les infos de la base).
le 31/05/2006 à 19:31
Bzh
heu bin si quand même !
Un petit htmlentities() + un stripslash pour l'affichage sont necessaire... Si si, un petit stripslash c'est quand même bien lorsque les magics quottes sont activés sur le forum
!!!
Avec mysql_escape_string, tu n'as pas besoin de faire un stripslashes (magic_quote ou non) vu qu'il n'y a pas de slashes pollueurs dans tes données en base.
le 31/05/2006 à 23:03
Bzh
Ah ? Et comment fait-il pour rendre passif les ' et les " ainsi que les # ???? etc ....
Si si, il ajoute, il me semble, des slashs...
Comment fait-il sinon ???
Oui il ajoute des \ la ou il faut juste avant ton INSERT, et donc comme il en met la ou il faut, quand tu regardes tes données via phpmyadmin, tu ne vois aucun \ pollueur, bref, aucun stripslashes à faire quand tu dump tes données.
Il ne faut pas confondre récupération de données d'un formulaire et insertion en base (malgrés que souvent on insert en base juste après une récupération de données d'un formulaire).
Ce sont deux choses différentes qu'on fait en deux étapes :
1) si magic_quote ou pas : des \ sont ajoutés ou non
2) (a ce niveau la, on a une chaine clean sans \ pollueur) insertion en base : on protége notre chaine qui est clean avec mysql_escape_string et la en base, on a pas de \ pollueur, donc pas de stripslashes
le 01/06/2006 à 18:58
Bzh
Oui mais si magic_quote=on, il faut passer par un stripslashs car les "\" seront ajouté automatiquement lors de l'affichages des donnés.
Là, je parle de l'affichage pour le stripslashs et non lors de l'insertion dans la base.