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 38296 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 novembre 2024 - 3 nov. 2015 à 18:29
jordane45 Messages postés 38296 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 novembre 2024 - 3 nov. 2015 à 18:29
A voir également:
- Htmlspecialchars vs htmlentities
- Udp vs tcp - Guide
- Dual core vs i5 ✓ - Forum Processeur
- Psp 2000 vs 3000 ✓ - Forum PSP
- Max vs netflix - Accueil - Streaming
- Honor magic 5 pro vs s23 ultra - Accueil - Guide téléphones
2 réponses
Utilisateur anonyme
3 nov. 2015 à 18:25
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 < 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).
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 < 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).
jordane45
Messages postés
38296
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 novembre 2024
4 704
3 nov. 2015 à 18:01
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 :
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
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
jordane45
Messages postés
38296
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 novembre 2024
4 704
>
Utilisateur anonyme
3 nov. 2015 à 18:29
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...
:-)
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...
:-)