Mieux que strip_tags et htmlspecialchars ?

cs_kakoo Messages postés 27 Date d'inscription jeudi 26 juin 2003 Statut Membre Dernière intervention 7 février 2009 - 14 nov. 2006 à 13:47
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 14 nov. 2006 à 18:13
Bonjour,

Ma question va peut-être paraître idiote mais je n'arrive pas à trouver la solution.

Je crée un logiciel qui gère des zones textes de commentaires, dans lesquelles tous les caractères sont autorisés.

Du fait de la particularité du logiciel en question il arrive souvent que des mots soient saisis entre '<' et '>' (par exemple '<=>', ou '<saisie>', ou du code XML).

Ma question est la suivante :

Sachant que je veux stocker du texte brut (échappé par addslashes) dans MySQL, que je ne veux pas utiliser htmlspecialchars, quelle est la solution pour vérifié le texte entré, supprimer uniquement les codes html (pour éviter les hacks et injections), et conserver les textes non html entre '<' et '>' ?

En effet, strip_tags ne sait pas différencier le code html du reste du texte et vire tout à chaque fois, et htmlspecialchars me rallonge le texte saisi, ce qui le "coupe" lors de l'enregistrement MySQL, si la longueur totale dépasse la taille allouée dans les champs de la base de données.

J'avais pensé à contrôler que les tags sont des tags html ou pas, mais je n'ai pas trouvé de solution souple qui ne m'obligerait pas à ressaisir le tableau des tags si le langage html évolue.

Une idée ?

Merci d'avance.

3 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
14 nov. 2006 à 16:20
Hello,

difficile de voir ce qui est du html et ce qui n'en est pas.

peut très bien faire partie d'un flux xml, après tout.
Comme tu le dis "si le langage html évolue"...ben ouais.
Seul htmlspecialchars (ou htmlentities) sera parfait car il évitera toute interprétation (sans supprimer, néanmoins : tu ne perds rien, mais évidemment, tu conserves aussi le superflu).
0
cs_kakoo Messages postés 27 Date d'inscription jeudi 26 juin 2003 Statut Membre Dernière intervention 7 février 2009
14 nov. 2006 à 17:41
Bonsoir,

Merci pour la réponse...même si ça ne solutionne rien pour moi.

En effet, je suis coinçé entre la longueur de mes champs MySQL et ces 2 fonctions qui me "virent" mes textes encadrés.

Et comme je n'ai pas trouvé de moyen d'énumérer des codes html valides...

Comment pourrais-je contourner le problème ?

Merci
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
14 nov. 2006 à 18:13
Avec une liste des tags non autorisés...
0
Rejoignez-nous