Projet IDAPA

Accueil > Ressources > SPIP > Extraction du contenu des articles et messages du forum via l’interface (...)

Extraction du contenu des articles et messages du forum via l’interface phpMyAdmin

jeudi 8 octobre 2009, par DURANNOT, Timothée B.

Vincent DURANNOT et Timothée BARNOUIN

Notre démarche dans cet article sera de formuler des commandes SQL afin de retrouver les différents textes contenus dans la base de données. En effet, il est indispensable de savoir retrouver ces articles et messages du forum pour le cas où une défaillance de l’interface graphique nous empêcherait de les consulter.

Dans le cadre de notre recherche, trois tables nous intéressent particulièrement :
- "spip-articles" qui contient le texte des articles.
- "spip-forum" qui contient les différents messages postés par les utilisateurs.
- "spip-messages" qui contient les messages envoyés entre utilisateurs.

On peut commencer par lire les messages du forum à l’aide de la commande suivante :

SELECT date_heure , texte , auteur FROM `spip_forum`

Cette requête SQL nous affiche le texte des messages, l’auteur du post et l’heure et date de celui-ci. Aucun problème ne se pose ici et le texte s’affiche directement, ce qui n’est malheureusement pas le cas pour les articles et messages privés.

En effet, si l’on veut appliquer la même méthode pour les tables "spip-articles" et "spip-messages", une mention BLOB apparait et le texte n’est pas accessible. Le type BLOB, pour Binary Large OBject, est un type de données permettant le stockage de données binaires (qui peut être du texte, mais aussi des images ou de la vidéo) dans le champ d’une table d’une base de données. Pour une question de sécurité, la lecture des BLOB ne s’effectue pas car le fichier pourrait contenir un virus ce qui abimerait la base de données. On peut noter que ceci est une configuration de l’administrateur sur l’interface phpmyadmin et non du serveur MySQL lui même. En effet phpMyAdmin est une interface générale pour tout type de base de données. A priori elle ne peut pas savoir quel type de données contient le BLOB. Par contre l’interface SPIP les affiche puisqu’elle suppose que c’est du texte saisi depuis son éditeur d’article.
C’est pour cela qu’après avoir exécuté les commandes suivantes, il faut exporter les tables obtenues :

SELECT texte FROM `spip_articles`
SELECT texte FROM `spip_messages`

Pour procéder à l’extraction, il suffit de cliquer sur le bouton "Exporter" en bas de page, puis de choisir le format le plus approprié : tous les formats textes sont censés fonctionner, mais dans le cas présent c’est le format XML qui semble renvoyer le plus de données structurées. Le format XML (Extensible Markup Language) est un langage informatique qui fonctionne à partir de balises (< >). Ainsi le texte exporté en XML sera structuré par différentes balises qui indiquent la table ou le champ, ce qui permet de différencier les enregistrements, et donc de gagner en lisibilité. Il y aura autant de balises que de base de données, de tables, de champs et d’enregistrements. Si on exécute l’export, le texte contenu dans les BLOB s’affiche alors.
L’inconvénient de cette méthode est que le texte obtenu est peu mis en forme : les différents articles ou messages sont mis à la suite sans séparation, ce qui rend la lecture plus ardue et il est nécessaire d’utiliser un programme d’édition ou de traitement du format XML.

Par ailleurs, on peut remarquer que la base de données est plus complète que l’interface graphique. En effet, si l’interface est remise à zéro (par exemple pour un changement d’administrateur), les données sont conservées et accessibles grâce à ces requêtes.