Htmlentities ou htmlspecialchars ou mysql_real_escape_string

Résolu/Fermé
chrisee Messages postés 171 Date d'inscription dimanche 23 février 2014 Statut Membre Dernière intervention 29 juillet 2017 - 3 nov. 2015 à 17:57
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 - 3 nov. 2015 à 18:29
Bonjour,

Je suis débutant en PHP, j'aimerais savoir la difference entre htmlentities et htmlspeciachars,et savoir si l'un est mieux que l'autre ou si l'on peut utiliser les deux à la fois,et pourquoi dans certains tuto j'ai vu à la place mysql_real-escape-string,et du coup j'entretiens une grande confusion là-dessus,merci d'avance.

A voir également:

2 réponses

Utilisateur anonyme
3 nov. 2015 à 18:25
Bonjour

Les fonctions htmlentities et htmlspeciachars sont assez voisines.
htmlentities traduit tout ce qui peut l'être en entités html, par exemple la lettre 'é' est remplacée par é
htmlspecialchars ne traduit en entités html que les caractères qu'il serait impossible d'afficher en HTML. Typiquement, si tu mets le signe < dans du html, il va être pris pour le début d'une balise : tu es obligé de l'écrire &lt; pour qu'il soit bien affiché "<".
Ces deux fonctions servent à afficher un texte quelconque en HTML.
L'utilité de htmlentities n'est plus évidente aujourd'hui qu'il existe des encodages qui acceptent tous les caractères : je ne l'utilise jamais. Mais autrefois, c'était le seul moyen de mélanger toutes sortes de jeux de caractères différents dans une même page.
htmlspecialchars doit obligatoirement être utilisée (dans les echo par exemple) dès qu'on a à afficher un texte qui vient plus où moins directement de l'extérieur, et qui peut donc contenir des caractères spéciaux. Il ne faut pas l'utiliser si on utilise déjà htmlspecialchars, puisque les caractères spéciaux ont déjà été transformés.
Ces fonctions ne doivent pas être utilisées pour enregistrer des informations dans une base de données, mais uniquement pour afficher quelque chose en HTML.

mysql_rel_escape_string servait (car il ne faut plus utiliser la bibliothèque mysql) pour que les caractères spéciaux ne soient pas pris comme tels dans les requêtes mysql. C'était une grosse faille de sécurité de ne pas l'utiliser. Elle jouait pour la base de données le même rôle que htmlspecialchars pour l'affichage html.
Aujourd'hui on n'utilise plus la bibliothèque mysql mais PDO. Avec les requêtes préparées on n'a plus (très rarement) besoin de la fonction équivalente (quote en PDO).
7
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
3 nov. 2015 à 18:01
Bonjour,


Pour ce genre de question.... rien ne vaut le MANUEL !

Par exemple, à la page :
https://www.php.net/manual/fr/function.htmlentities.php

On peut y lire :

htmlentities() est identique à la fonction htmlspecialchars(), sauf que tous les caractères qui ont des équivalents en entités HTML sont effectivement traduits.



Pour ce qui est de la fonction mysql_real-escape-string ... elle n'est plus utilisée dès lors que tu passes à la PDO ou Mysqli
Là encore... le site du MANUEL PHP est là pour répondre : https://www.php.net/manual/fr/function.mysql-real-escape-string.php

0
Utilisateur anonyme
3 nov. 2015 à 18:26
Bonjour Jordane

Il y avait longtemps...
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > Utilisateur anonyme
3 nov. 2015 à 18:29
hello,
oui, j'ai eu du mal à revenir sur les fofos après mes vacances....
mais bon... j'ai décidé de m'y remettre un peu....je vais éviter de faire comme avant du 7h00 -> 3h00 par contre...
:-)
0