Mieux que strip_tags et htmlspecialchars ?

Signaler
Messages postés
27
Date d'inscription
jeudi 26 juin 2003
Statut
Membre
Dernière intervention
7 février 2009
-
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
-
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

Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
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).
Messages postés
27
Date d'inscription
jeudi 26 juin 2003
Statut
Membre
Dernière intervention
7 février 2009

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
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Avec une liste des tags non autorisés...