Aide htmlentities|htmlspecialchars|addslashes|stripslashes

WRInaute accro
Alors j'ai bien lu l'aide officiel du site PHP.net !

Cependant j'ai besoin d'utilisateur ayant pratiqué !

Lorsque je fais cela:
Code:
trim(htmlentities(addslashes($_POST['message']))))
Et que le message est:
l'utilisateur blabla...
il me l'envois avec: \\\'

Donc j'ai ajouter la fonction stripslashes sur le message, il me retourne: \'
Il y a du mieux mais ce n'est pas ca !

Comment je peux faire pour sécuriser tout en ayant un message correcte au final ?
Je suis vraiment coincé et tourne en rond, si quelque pouvais m'aider à ce sujet !

Encore une chose...
je n'ai pas compris la différence entre htmlentities et htmlspecialchars !
Laquel vaut-il mieux utiliser ?

http://fr2.php.net/manual/fr/function.htmlspecialchars.php
http://fr2.php.net/manual/fr/function.htmlentities.php

Merci de votre aide.
 
WRInaute accro
Je te remercie pour ces informations....
Merci bcp de ton aide !

par contre une idée pour la différence entre htmlentities et htmlspecialchars ?
 
Nouveau WRInaute
salut !

Pour l'histoire des cotes, je suis d'accord ! a bas le magic quotes !!!! GRRR

Pour le coup d'htmlentites et htmlspecialchars, si tu lis la doc, tu comprendra la différence.

htmlspecialchars ne transforme que les caractères pouvant être interprétés comme de l'html ( < > & " ' ). Il permet surtout de ne pas laisser qqun rajouter des balises dans un post.
htmlentities transforme TOUS les caractères qui peuvent l'être en html. En gros, il faut comme son copain, mais il transforme en plus les accents, et autres caractères non html !

A+
Nico
 
WRInaute discret
En fait quel est ton besoin réel ?

Si ce besoin est l'insertion en base de données (ou la mise à jour d'ailleurs) en php de chaines de caractères pouvant contenir des cotes, pour ma part, j'utilise systématiquement le code suivant :

Code:
$query = "Insert Into MA_TABLE(COL1, COL2) Values ($entier, \"$varchar\")";
mysql_query($query);
 
WRInaute accro
trim(htmlentities(addslashes($_POST['message']))))

??

tu veux dire trim(htmlentities(stripslashslashes($_POST['message']))))

htmlentities de addslashes, je vois pas bien l interet. alors que htmlentities de stripslashes te sortira un message sans slash, non ?

si c est pour inserer dans une bdd, pas besoin de htmlentities, tu l insere avec addslashes et l affiche avec stripslashes
 
WRInaute occasionnel
e-kiwi a dit:
si c est pour inserer dans une bdd, pas besoin de htmlentities, tu l insere avec addslashes et l affiche avec stripslashes

faire attention quand même que l'utilisateur lambda ne puisse pas stocker de code HTML (ce qui permettrait, par exemple, de faire passer du javascript...). De plus, les accents ont parfois du mal à passer selon l'encodage (jeu de caractère) par défaut de ta base, chez certains hébergeurs notamment.
 
Discussions similaires
Haut