Question

Si j'échappe à un code parce que je souhaite l'afficher comme le code réel en HTML (par exemple, pour un extrait de code), enregistrez-le dans la base de données, puis récupérez-le dans l'éditeur (une page html), c'est affiché en tant que HTML, par opposition au texte échappé.

Mon problème survient lorsque j'inclus une balise textarea dans le texte, car elle ferme prématurément la zone d'édition et supprime le reste de ce que j'écris lorsqu'il est enregistré (ou davantage si je ne ferme pas la balise).

Ma question est donc la suivante: s'agit-il du comportement voulu du navigateur? - > J'ai donc besoin d'échapper au texte (code et pré-tags peut-être)? chaque fois que je veux y apporter des modifications? Ou est-ce que je fais quelque chose de mal?

* Notez que je suis la seule personne à utiliser cela et que c'est principalement juste pour apprendre. Je ne m'inquiète donc pas de l'aspect sécurité mais aussi de la manière dont je dois contrôler mon html lorsque je l'utilise dans un navigateur. il se comporte comme prévu.

Était-ce utile?

La solution

@Bob: htmlentities () n'est pas la même chose que htmlspecialchars ()

htmlentities () convertira chaque caractère contenant un code ASCII en ce code. htmlspecialchars () ne fera que ceux qui sont spéciaux en HTML, tels que & amp ;, quotes, and < ou >

C’est une différence assez importante qui peut casser certaines choses et peut également rendre le résultat énorme lorsque vous utilisez htmlentities ().

Autres conseils

D'après mon expérience, vous devez vous échapper d'un personnage spécial. En PHP, la fonction est htmlspecialchars (). Je ne sais pas d'autres fonctions. Mais le parcours affichera correctement les caractères encodés dans la zone de texte.

La plupart des langages basés sur le Web auront une fonction de bibliothèque pour échapper des caractères interprétés en HTML, alors consultez la documentation du langage que vous utilisez.

Comme Darryl l'a dit, html_entities () (qui est un alias pour htmlspecialchars ()) fera l'affaire en PHP.

Ce comportement est-il prévu de la part du navigateur? Oui, le navigateur interprète votre code HTML (non échappé) comme des balises HTML appartenant à la page et agit en conséquence.

J'ai donc besoin d'échapper au texte (code et pré-tags peut-être)? Oui, comme l'a dit Darryl Hein, utilisez htmlspecialchars (). Ils seront affichés correctement par le navigateur et vous n'avez pas besoin de & "Unescape &"; les données qui reviennent de l'édition.

... est-ce que je fais quelque chose de mal? Vous devez inspecter toute entrée venant de votre application ou la laisser et voir s'il est possible que des caractères aient une signification particulière pour le navigateur, pour votre serveur de base de données et pour les autres parties de votre solution. Vous devez échapper correctement les caractères spéciaux pour chaque interaction (par exemple, mysql_escape_string () pour la base de données MySQL, htmlspecialchars () pour le code HTML, etc.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top