htmlentities(), htmlspecialchars() ..

WRInaute discret
Bonjour,
Je cré un espace membre pour un site et comme d'jabitude, je suis confronté au même problème.
Les données du profil de chaque membre sont enregistrées en bdd.
Quand je veux afficher leur profil visible par tout le monde, je fais un htmlentities()
Seulement, il me converti les accents.
Je suis sur une page utf-8 et je n'ai pas tellement l'intension de changer.
Comment faire pour bien protéger mes pages en affichant correctement les accents ?
Serait-il mieu de faire un strip_tags() en enregistrant les données et ne pas faire de htmlentities à la sorti ?

Merci pour vos réponses !!
 
WRInaute accro
Oulala, la galère, pourquoi tu paniques autant en voulant afficher les données provenant de ta base de données ?

C'était plutôt lors de l'insertion dans ta base de données qu'il fallait t'en préoccuper, et le htmlentities est strictement inutile en utf-8.
 
WRInaute discret
Bah dans un sens où dans l'autre, moi ce que he veux c'est simplement éviter le hack du site à cause d'une boulette ...
Comment ça il est inutil en utf-8 ?
Et comment est-ce que je dois procéder pour que la bdd soit la mieu protégée et éviter les problèmes d'accents ?
 
WRInaute accro
Personne ne s'est jamais fait hacké parcequ'il avait affiché un accent sans l'avoir passé dans un htmlentities que je sache. htmlentities ne sert que pour l'ISO, l'utf en a pas besoin puisqu'il peut utiliser tous les caractères existants...

Il suffit de vérifier lors de l'insertion tes données, c'est tout, après tu affiches sans même faire attention.

Tu vérifies tout ce que peut rentrer l'utilisateur (GET et POST) à coup de htmlspecialchars en spécifiant le 2ème paramètre, selon ce que tu veux aussi convertir (' et ") par exemple ENT_QUOTES.

Tu fais un mysql_real_escape_string lors de l'insertion en bdd.

Après quand tu vas rechercher tes infos, tu les affiches bêtement ;)
 
WRInaute passionné
Question de point de vue, mais pour ma part je ne fais jamais d'htmlentities ou htmlspecialchars lors de l'insertion en base de données : pourquoi encoder du texte en HTML dans une base de données ? Cela réduit très fortement les possibilités de recherche, de comparaison et de réutilisation.

Par contre il est préférable de vérifier les données lors de la saisie oui. On insère en base que ce que l'on compte utiliser quoi.

Et à l'affichage il n'y a plus qu'à faire l'htmlspecialchars / htmlentities, sur ce qui est nécessaire. Ca ne consomme vraiment pas grand chose, et je préfère pour ma part économiser d'autres ressources que ça.
 
Discussions similaires
Haut