8797 sujets

Développement web côté serveur, CMS

Bonjour,

J'ai un soucis avec la fonction htmlentities(); pour sécuriser mes formulaire.

Je suis sous easy php et quand tu fait :

<?php
$str = 'Un \'apostrophe\' en <strong>gras</strong>';

echo htmlentities($str);

echo htmlentities($str, ENT_QUOTES);
?>


Chez moi sa affiche : Un 'apostrophe' en <strong>gras</strong>Un 'apostrophe' en <strong>gras</strong>
au lieu de : Un 'apostrophe' en &lt;strong&gt;gras&lt;/strong&gt;Un &#039;apostrophe&#039; en &lt;strong&gt;gras&lt;/strong&gt;

Bizare avant sa me le faisait pas mais j'ai du zapper un truc la Smiley ohwell Smiley eek
a l'affichage? c'est normal a l'affichage les entités sont interpretées.

as tu regarder le source?
Modifié par CPascal (19 Mar 2008 - 12:32)
oui mais dans le cas d'une insertion dans une table mysql voila ce que j'obtient et qui est logique:

Erreur SQL !INSERT INTO guestbook(id, nom, email,titre, commentaires , date) VALUES('','''''',''''''''@''''.''''''''''','''''''''''''''''''''''''',''''''','19-03-2008')
Erreur de syntaxe près de '@''''.''''''''''','''''''''''''''''''''''''',''''''','19-03-2008' à la ligne 1
pour une insertion dans une base de données le htmlentities n'est pas ton ami.

si c'est mysql tourne toi vers mysql_real_escape_string

si c'est sql serveur double les simple quote

etc...

sinon bonjour pour faire des recherches dedans si c'est plein d'entités.

a écrit :
Erreur SQL !INSERT INTO guestbook(id, nom, email,titre, commentaires , date) VALUES('','''''',''''''''@''''.''''''''''','''''''''''''''''''''''''',''''''','19-03-2008')
Erreur de syntaxe près de '@''''.''''''''''','''''''''''''''''''''''''',''''''','19-03-2008' à la ligne 1


ceci dit quel rapport nom d'une vache folle entre ce texte et ta question precedente.
Modifié par CPascal (19 Mar 2008 - 12:52)
Merci je vais me rensigner sur mysql_real_escape_string , mais une question subsiste, a quoi peu bien servir la fonction htmlentities si ce n'est pas pour "nettoyer" une chaine afin de la sauvegarder ?
ben moi je m'en sers parfois pour l'affichage mais jamais pour l'enregistrement.
c'est des fois utile en dernier recours.

notamment dans le cadre de trucs melange de php et de javascript comme des tooltips.

sinon aujourd'hui avec UTF8 et les progrés en internationalisation, le htmlentities est un peu moins important que jadis.

ceci dit essai de faire un site en japonais tu t'en servira peut-être a gogo Smiley confus Smiley cligne quoi que même si on maîtrise ( c'est pas mon cas ceci dit ) pas besoin.

mais pour l'insertion en base bof bof

edit: yes les langages serveurs ont atteint 10000 posts Smiley lol
Modifié par CPascal (19 Mar 2008 - 13:45)
Bonjour,

à mon avis htmlentities est largement sur-utilisée et à mauvais escient, il existe des solution plus adaptée dans la majorité des cas:
-Pour échapper un texte à afficher en html/xml, htmlspecialchars est préférable.
-Pour échapper un texte en vu d'une utilisation spécifique (base de donnée, eval, ...), utiliser les fonctions prévues à cet effet (mysql_real_escape_string, adslashes, ...).
-Pour afficher des caractères Asiatiques ou même €, préférer un encodage adéquat (UTF-8, Shift_JIS).
Salut,
Necromantik a écrit :
à mon avis htmlentities est largement sur-utilisée et à mauvais escient, il existe des solution plus adaptée dans la majorité des cas:
-Pour échapper un texte à afficher en html/xml, htmlspecialchars est préférable.
-Pour échapper un texte en vu d'une utilisation spécifique (base de donnée, eval, ...), utiliser les fonctions prévues à cet effet (mysql_real_escape_string, adslashes, ...).
-Pour afficher des caractères Asiatiques ou même €, préférer un encodage adéquat (UTF-8, Shift_JIS).

Tout à fait d'accord. Mais ce n'est pas simple à faire comprendre. Smiley smile
Et pourtant quand on a compris on se rend compte que ça ne devrait pas etre si difficile a faire comprendre.

Utiliser htmlentities c'est insérer du code html dans un contenu, alors que le savoir-bien-faire-comme-il-faut veut qu'on ne mélange pas forme et contenu.
skywalk3r a écrit :
Utiliser htmlentities c'est insérer du code html dans un contenu, alors que le savoir-bien-faire-comme-il-faut veut qu'on ne mélange pas forme et contenu.

J'avoue que présenté comme ça, je trouve ça tout d'un coup plus difficile à comprendre. Smiley cligne

Et l'explication de Necromantik allait un peu au-delà de cet aspect.
bof.

a l'affichage de toute façon les entités seront interprétés.

et que fais htmlspecialchars? la même chose car ce sont toujours ces caractéres qui posent problemes dans 99,9% des cas quand il s'agit d'un site français ou du même alphabet.

ça evite de "entiter" les accents certes.
Modifié par CPascal (19 Mar 2008 - 14:44)