[FreeGlobes] Mise en forme du texte

Publié le 26/08/2009 à 17h03

En travaillant sur le nouvel annuaire pour faciliter le guest-blogging, j'ai constaté un gros bug avec l'outil de création d'annuaire FreeGlobes. Ce billet explique ce bug et détail la procédure pour le corriger.

Logo PHP

Logo PHP

Présentation du bug

Lorsqu'un membre de l'annuaire ajoute un site, il a la possibilité de mettre en forme le texte de sa description grâce à un éditeur WYSIWYG. Cela permet de mettre des éléments en gras, italique, souligné, couleur et bien d'autres choses encore tel que l'ajout de lien supplémentaire dans la description.

Or, il s'avère que lorsque le site est validé, toute la description est ajouté dans la base de donnée sans aucune mise en forme, ce qui reviens à dire que l'éditeur WYSIWYG est totalement inutile et qu'il trompe les membres. Moi-même j'ai effectué des inscriptions dans des annuaires FreeGlobes en pensant pouvoir ajouter un lien profond, mais je n'ai fais que perdre mon temps.

Réparer le bug

L'origine du bug se situe dans le répertoire "members/include/functions" dans le fichier intitulé link.php. Je vous recommande d'ouvrir ce fichier php avec un traitement de texte simple ou avec NotePad++ (qui est un excellent outil). A la ligne 106 il y a le bout de code suivant:

$description = isset($_POST['description']) ? strip_tags($_POST['description']) : "";

Les connaisseurs en PHP comprendront que la fonction strip_tags supprime toutes les balises PHP et HTML de la description rédigé avec l'éditeur WYSIWYG. Pour corriger le problème il y a deux solutions, l'une étant plus sécurisé que l'autre.

Solution 1

La première solution consiste à enlever la fonction strip_tags, mais c'est une porte ouverte aux tentatives de piratage. En effet, si un membre mal intentionné insère un script particulier, cela ne sera pas filtrer et le script comportant le code mal intentionné sera ajouté sur le site. Toutefois voici le code à inséré pour ceux qui désire utiliser cette solution:

$description = isset($_POST['description']) ? $_POST['description'] : "";

Solution 2

Cette deuxième solution, moins risqué, consiste à préciser les balises HTML autorisée. Un paramètre de la fonction strip_tags permet d'indiquer les balises qu'il ne faut pas filtrer. Voici le code que j'ai utilisé qui permet une mise en forme de la description tout en évitant de laisser passer certains balises HTML dangereuse:

$description = isset($_POST['description']) ? strip_tags($_POST['description'], '<p><a><strong><em><ul><ol><li><font><table><hr><br><td><tr><th><u><span><img>') : "";

En copiant/collant ce code suivant, vous réparerez le petit bug. J'invite d'ailleurs tous les administrateurs d'annuaire FreeGlobes à modifier cette partie du code, pour permettre à leurs membres de mettre en forme le texte. Après tout, s'il y a un éditeur WYSIWYG ce n'est pas pour rien.
J'invite donc également tous les webmasters et référenceurs de contacter les annuaires récalcitrant pour les inciter à corriger ce bug. Vous y gagnerez puisqu'une fois corrigé il est possible d'insérer plusieurs liens dans la description.

Auteur: Tony Archambeau

Développeur web passionné par le référencement et l'ergonomie d'utilisation des sites et applications web, j'édite plusieurs sites web dont infowebmaster.fr.

Commentaires


hdmi
Le 27 août 2009

merci, la seconde solution et effectivement moins risquée.


r4
Le 1 septembre 2009

Merci pour l’info, je vais de ce pas modifier le code.


Funnycat [site]
Le 1 septembre 2009

Merci pour vos commentaires. Quel est l’adresse de ton annuaire r4?


eBay
Le 5 décembre 2009

Merci pour cette correction car c’est en effet parfois frustrant de voir une mise en forme disparaitre une fois la publication effectuée.


David
Le 8 décembre 2009

Is it possible to make guest bloging on your site ?


Funnycat [site]
Le 8 décembre 2009

@David: Oui, mais ça dépend le sujet (et la langue). Par ailleurs, pourquoi parler en anglais (cette page est en français et votre site est en français)?


Bruno [site]
Le 26 mai 2010

Ou je suis d’accord, il faut parler en français sur une page en français sinon ça devient l’anarchie.

Sorry, the comment form is closed at this time.