Hello !
j'aurai voulut savoir avotreavis quel etait la meilleur fa con pour en registrer des données dans sa bdd
je m'explique avec un exemple :

$message = nl2br(mysql_real_escape_string(htmlspecialchars($_POST['message'])));

mysql_real_escape_string : pour eviter les injections de sql
htmlspecialchars : qui converti le html
nl2br : pour garder mes saut de ligne

que pensez vous de mon exemple?
au fait doi-je plutot utiliser un htmlspecialchars ou un htmlentities?
dois je ajouter un addslashes et a quoi sert 'il?
Bonjour,
Voila un sujet bien trop compliqué, pour te répondre ainsi !

Quand je dis compliqué je veux dire que c'est enfantin , demande du bon sens , mais n'a pas de réponse unique.

Juste je dirais qu'avant d' injecter une variable dans une table OUI il est indispensable de faire un
mysql_real_escape_string : pour eviter les injections de sql
En prenant garde a avoir ouvert la connection a Mysql, faute de quoi tu aurais une erreur !

Si non, lorsque nous devons "travailler sur une variable" venant de l'extérieur FILES POST GET etc... il n'y a rien a faire puique peut importe le contenu, nous n'executons pas la variable.

Si nous devons afficher cette variable, il faut empécher d'avoir du code donc
htmlspecialchars a son rôle .

par contre nl2br : pour garder les saut de ligne
Ah mais OU ???
si je fais un echo OUI car le texte est envoyé par exemùple dans un DIV
Mais s'il sagit d'un TEXTAREA non bien sur car ce sont les "\n" dont nous avons besoins !

Encore un détail, ce serait idiot de faire
nl2br PUIS htmlspecialchars Smiley biggrin
Alors...
Surtout pas de addslashes ! C'est trop facilement "hackable". Ca n'est pas vraiment dur de passer outre, quoi.
mysql_real_escape_string est obligatoire pour des données provenant de l'utilisateur. Si c'est toi qui génère un id avec uniqid(), par exemple, c'est inutile (moins tu utilises de fonction, plus tu code est rapide). Après, comme l'a dit Christele ça requiert d'avoir ouvert une connexion avec MySQL au préalable, ce qui peut être embêtant en fonction de ta manière de coder.
Enfin, pour ce qui est de htmlspecialchars() est largement suffisant, mais de préférence à utiliser avec l'option ENT_QUOTES pour convertir les quotes simples ('), et... pas au moment du stockage en base de donnée. Ce dernier point peut se discuter, mais c'est une question de choix. Personnellement je préfère stocker du html dans ma base de données et ne l'encoder que lors d'un affichage. Ca m'évite d'avoir à l'encoder peut-être inutilement avant de le mettre en base de données.
Trop souvent on voit des gens qui encodent tout ce qu'ils mettent en base de données, parce qu'ils pensent que c'est sécurisé. C'est surtout une perte de temps pour le serveur qui doit exécuter des fonctions pour protéger des variables qui n'ont pas besoin de l'être.
Modifié par phpdoesnotcare (30 Apr 2010 - 09:43)