Bonjour,
Je tente de mettre au point une console d'administration pour mon site, un genre de CMS fait maison, très simple, parfaitement adapté à mes besoins et à la nature de mon site.
Or je lis aussi ici où là qu'il n'est pas du tout recommandé de stocker du HTML dans une BDD. Voici à ce propos un exemple lu dans un forum :
"- En second lieux, se poser la question de savoir s'il est vraiment bon de stocker du HTML dans sa base de donnée. Un petit exemple très amusant : http : //fr.thedailywtf.com/Articles/Mentors,-the-Freshmaker-(T).aspx.
- Enfin, si tu veux toujours stocker ton HTML dans ta BDD, tu devrais soit utiliser html_entity_decode() lors de la récupération de tes donnés OU remplacer ton htmlentities() par un mysql_real_escape_string()"
Voici un autre exemple sur un autre forum :
"Même si, normalement, on ne stocke jamais en BDD du code HTML, la fonction html_entity_decode te sera sûrement utile."
Ces deux exemples suffisent.
Mais moi, ça me turlupine, ça me donne des cauchemars... En effet, j'ai beau tourner la chose dans tous les sens, je ne vois pas comment :
1) on peut mettre en oeuvre un système de gestion de contenu sans mettre du HTML en BDD. D'ailleurs les CMS que j'ai examinés (CMS Made Simple, Joomla!, etc.) stockent bien du HTML en BDD, le code brut même, avec les balises et tout et tout ! Et les champs de la BDD où le contenu est stocké sont souvent le champ TEXT...
2) un site comme Alsacreations par exemple peut fonctionner sans stocker d'une manière ou d'une autre du html en BDD. Par exemple, le message que je suis actuellement en train d'écrire sera évidemment stocké en BDD. Or il comporte une mise en forme, les paragraphes que j'écris par exemple, donc au moins des balises <p></p> ! Que dire alors si je mets une partie du texte en gras, en italique, etc., et si j'y insère un lien. Tout cela se traduit évidemment par du HTML qui sera stocké en BDD quand j'aurai cliqué sur le bouton pour poster mon message, non ?
Qu'ils ne soient pas stockés sous une forme brute mais convertis avec des fonctions du genre htmlentities() ou htmlspecialchars(), OK, là n'est pas ce qui me gêne. Ce qui me tracasse, c'est l'idée suivante qui ressort à chaque fois un peu partout : "Normalement, on ne stocke pas du HTML; mais si néanmoins on veut passer outre cette recommandation et stocker quand-même, alors il faut utiliser htmlentities() etc., ce qui est un moindre mal".
C'est comme s'il existait une alternative au fait de stocker du contenu HTML (transformé ou pas) en BDD. Moi je ne vois pas, il y a un mystère que je vous prie de bien vouloir m'aider à résoudre...
Modifié par somdina (07 Dec 2010 - 21:42)
Je tente de mettre au point une console d'administration pour mon site, un genre de CMS fait maison, très simple, parfaitement adapté à mes besoins et à la nature de mon site.
Or je lis aussi ici où là qu'il n'est pas du tout recommandé de stocker du HTML dans une BDD. Voici à ce propos un exemple lu dans un forum :
"- En second lieux, se poser la question de savoir s'il est vraiment bon de stocker du HTML dans sa base de donnée. Un petit exemple très amusant : http : //fr.thedailywtf.com/Articles/Mentors,-the-Freshmaker-(T).aspx.
- Enfin, si tu veux toujours stocker ton HTML dans ta BDD, tu devrais soit utiliser html_entity_decode() lors de la récupération de tes donnés OU remplacer ton htmlentities() par un mysql_real_escape_string()"
Voici un autre exemple sur un autre forum :
"Même si, normalement, on ne stocke jamais en BDD du code HTML, la fonction html_entity_decode te sera sûrement utile."
Ces deux exemples suffisent.
Mais moi, ça me turlupine, ça me donne des cauchemars... En effet, j'ai beau tourner la chose dans tous les sens, je ne vois pas comment :
1) on peut mettre en oeuvre un système de gestion de contenu sans mettre du HTML en BDD. D'ailleurs les CMS que j'ai examinés (CMS Made Simple, Joomla!, etc.) stockent bien du HTML en BDD, le code brut même, avec les balises et tout et tout ! Et les champs de la BDD où le contenu est stocké sont souvent le champ TEXT...
2) un site comme Alsacreations par exemple peut fonctionner sans stocker d'une manière ou d'une autre du html en BDD. Par exemple, le message que je suis actuellement en train d'écrire sera évidemment stocké en BDD. Or il comporte une mise en forme, les paragraphes que j'écris par exemple, donc au moins des balises <p></p> ! Que dire alors si je mets une partie du texte en gras, en italique, etc., et si j'y insère un lien. Tout cela se traduit évidemment par du HTML qui sera stocké en BDD quand j'aurai cliqué sur le bouton pour poster mon message, non ?
Qu'ils ne soient pas stockés sous une forme brute mais convertis avec des fonctions du genre htmlentities() ou htmlspecialchars(), OK, là n'est pas ce qui me gêne. Ce qui me tracasse, c'est l'idée suivante qui ressort à chaque fois un peu partout : "Normalement, on ne stocke pas du HTML; mais si néanmoins on veut passer outre cette recommandation et stocker quand-même, alors il faut utiliser htmlentities() etc., ce qui est un moindre mal".
C'est comme s'il existait une alternative au fait de stocker du contenu HTML (transformé ou pas) en BDD. Moi je ne vois pas, il y a un mystère que je vous prie de bien vouloir m'aider à résoudre...
Modifié par somdina (07 Dec 2010 - 21:42)