Bonjour à tous,
Je viens de me rendre compte en créant une actualité que si j'essaye d'ajouter une image au post, le code html de tinmymce est interprété correctement :

<p><img class="alignLeft" src="/img/2012/04/gamer_s.jpg" alt="" /></p>

Une fois sauvegardé, le code html devient :

<p><img class="\"alignLeft\"" src="/admin/posts/edit/\"/img/2012/04/gamer_s.jpg\"" alt="\"\"" /></p>

Je ne comprend pas le problème, au début j'ai pensé que le problème venait de mon model COMMENT vu qu'il est relié à mon model POST avec :

Sanitize::html

qui remplace tout code html du contenu, mais en le désactivant, le problème est toujours présent.
Si quelqu'un à une solution ?

Merci d'avance et bon dimanche

5 réponses


Bonjour,

Il est en effet déconseillé d'utiliser la classe Sanitize avant la sauvegarde. La meilleure démarche est de sauvegarder en base le contenu tel qu'il a été écrit au départ (Cake effectue de toute façon un certain nombre de chose pour éviter le SQL Injection), en revanche c'est à l'affichage qu'il faut le "sanitizer" pour éviter le XSS par exemple.

Ce qui est étrange dans ton cas c'est que même une fois ton Sanitize désactivé, Cake continue à l'enregistrer en base en le "sanitisant"... Es-tu sur de ne pas avoir laissé autre part un "sanitize" (dans le beforeSave() du AppModel par exemple) ?
Et enfin, comment as-tu réaliser tes test ? Si tu réinjectes du contenu déjà "sanitizer" c'est normal qu'en base le code le soit...
Essayes avec du nouveau contenu !

Happy Baking !

flo69
Auteur

La classe sanitize est uniquement utilisée pour l'ajout de commentaire sur un post de cette manière :

function beforeSave(){

App::uses('Sanitize','Utility');

$this->data'Comment']'contenu'] = Sanitize::html($this->data'Comment']'contenu']);

return true;

}

et donc n'a aucun rapport avec les posts ou pages

Essayes de faire un debug step by step depuis la soumission de ton formulaire dans ton controlleur, jusqu'à avant la sauvegarde en utilisant la fonction pr() sur tes datas.

Peut-être que c'est le tinymce qui automatiquement escape les caractères au moment de la soumission du formulaire....

Sinon là j'ai pas plus d'idée pour le moment, désolé.

Happy Baking !

flo69
Auteur

Ok merci je vais regarder ça ce weekend.
++

flo69
Auteur

Je n'est pas pu attendre ce weekend !
Je n'est pas trouvé le problème, simplement dans le before save de mon model post je fais sauter les quote avec :

$this->data'Post']'content'] = stripslashes($this->data'Post']'content']);

Et le problème est réglé, mes images sont bien affichés en admin comme sur le reste du site