Ckeditor + SyntaxHighlighter

WRInaute passionné
Bonjour,

Dans un précédent poste, on ma dit qu'il fallait enregistrer les données saisie via un formulaire telle qu'elle...donc pas d’entités en bd. Comme j'utilise Ckeditor + SyntaxHighlighter, je me suis arrangé pour virer également les entités.
En bd, je me retrouve donc avec ce style d'enregistrement :
Code:
<pre>
<ul>
	<li>teste</li>
	<li>teste</li>
</ul>
</pre>
&é"'(-èa&é"'(-è&é"'(-è+===&é"'(-èa&é"'(-è&é"'(-è+,&é"'(-èa&é"'(-è&é"'(-è+
C'est donc exactement ce que j'ai saisie mais la ou ça "merdouille", c'est qu'en sortie le code HTML situé entre <pre></pre> est interprété en tant que tel (normal) alors que moi je souhaite l'afficher comme du texte.
Du coup,on m'aurait menti à l'insu de mon plein gré? :mrgreen:

Je ne sais plus ce que je dois enregistrer en bd .. texte brute, entité, autre ..?

Merci
 
WRInaute accro
Dans le cas d'un éditeur WISYWYG, là oui tu peux enregistrer les entités HTML dans la DB.
Je parle de <p><a href="">, ne pas enregistrer: &lt;p&gt;&lt;a href=&quot;&quot;&gt;

Mais dans ce cas, pas de htmlentities() lors de l'affichage.
 
WRInaute passionné
Merci de ta réponse spout
spout a dit:
Dans le cas d'un éditeur WISYWYG, là oui tu peux enregistrer les entités HTML dans la DB.
..et dans le cas d'un simple textarea ou champ texte?

J'ai un peut de mal à saisir le truc car selon ce que j'ai compris, il faut enregistrer les données en bd tel quelle (mysqli_escape_string) et effectuer les contrôles (htmlentities, htmlspecialchars, etc) uniquement en sortie...c'est bien ça :?:
 
WRInaute passionné
Cool :mrgreen: mais c'est illogique (pour moi).
Pourquoi laisser libre court à l'insertion et contrôler la sortie alors que l'inverse me semble plus logique?
Dans le cas d'un formulaire en libre accès, n'importe qui peut rentrer n'importe quoi et "alourdir" la base inutilement!
 
WRInaute accro
Hein ?
Non dans le cas d'un formulaire en libre accès, il faut évidemment filtrer le HTML :lol:
 
WRInaute passionné
spout a dit:
Hein ?
Non dans le cas d'un formulaire en libre accès, il faut évidemment filtrer le HTML :lol:
Te moque pas :mrgreen:
Donc libre accès = strip_tags() à l'entrée et htmlspecialchars() en sortie, c'est bien ça?

J'en reviens à Ckeditor, si j'enregistre &é"'èàç@ j'ai en bd &amp;&eacute;&quot;&#39;&egrave;&agrave;&ccedil;@ , ça ne pose pas de problèmes particulier?

Désolé de ces questions qui peuvent être stupides à ton niveau mais ça fait des années que j'ai l’impression de faire n'importe quoi :roll: ...
 
WRInaute accro
tryan a dit:
Donc libre accès = strip_tags() à l'entrée
Oui
tryan a dit:
et htmlspecialchars() en sortie, c'est bien ça?
Si les données ne sont pas de l'HTML, t'as pas envie de transformer ton <p>hello world</p> en &lt;p&gt;hello world&lt;/p&gt;

tryan a dit:
J'en reviens à Ckeditor, si j'enregistre &é"'èàç@ j'ai en bd &amp;&eacute;&quot;&#39;&egrave;&agrave;&ccedil;@ , ça ne pose pas de problèmes particulier?
Si tu regardes le source dans la démo:
http://ckeditor.com/demo

Juste les "&" => "&amp;", "é" => &eacute;, "à" => &agrave; ... etc sont changés (c'est configurable), pas les <a href=""></a> <p></p>
Donc oui c'est bon.
Mais attention avec strip_tags() ça ne suffit pas à se protéger du XSS: http://fr.wikipedia.org/wiki/Cross-site_scripting

Je pense à ceci: http://htmlpurifier.org/
 
Haut