3. Fonctionnement du MODIl est bien entendu hors de question de désactiver les filtres de phpbb. Votre forum ne ferait pas long feu dans ces condition.
On va donc créer deux balises bbcode :
[html] et
[/html] et se débrouiller pour que le texte saisi entre ces balises ne
soit pas filtré par phpbb. Ensuite, avant envoi du texte au navigateur client, on retire les balises
[html] et
[/html].
Pour ne pas prendre trop de risque, il faudrait se prévenir des risques d'injection SQL et de code php. Un filtre alourdirait le code.
On va donc prendre une solution simple, courte et élégante : L'encodage base 64.
On fait d'une pierre trois coups : Le code html est protégé des filtres, on se protège de l'injection SQL et le code php est extrèmement court : Il suffit d'ajouter trois lignes de code réparties dans trois fichiers pour effectuer tout le travail.
Il faut donc réaliser les trois opérations suivantes :1.
Protection du code :
[html]{TEXTE}[/html] est transformé en
[codebase64]{TEXTE ENCODÉ}[/codebase64]2.
Déprotection juste avant envoi au navigateur client et retrait des balises
[html][/html]3.
Déprotection pour l'édition du message, en conservant les balises
[html][/html]On utilise les expressions régulières avec callback et la fonction d'encodage base 64 de PHP.
4. Comment utiliser le MODPour utiliser le MOD, il suffit donc d'insérer dans un message :
- Code: Tout sélectionner
[html] Le code html à protéger [/html]
Le code html à protéger doit être entré sur une seule ligne. C'est important. Autrement, les balises ne seront pas prises en compte. Si le code est complexe, il est préférable de le taper dans un éditeur de texte (notepad, kwrite, gedit, etc ...) puis de passer l'ensemble du code sur une seule ligne avant de le coller dans phpbb.
Si le code est très long (plus de 1024 caractères) il est également possible de le fractionner sur plusieurs lignes en cumulant les balises :
- Code: Tout sélectionner
[html]Ligne 1 de code html[/html]
[html]Ligne 2 de code html[/html]
[html]Ligne 3 de code html[/html]
[html]Ligne 4 de code html[/html]
Ainsi des codes complexes peuvent être découpés. Ci dessous, un exemple d'affichage utilisant du code HTML réparti sur trois lignes. Au final on ne voit qu'un seul tableau car les balises [html][/html] ne sont pas envoyés au navigateur :
Tutoriel pour insérer une formule de maths dans un post du forum pythagora phpbb3Regardez quand même la rubrique sécurité pour savoir comment vous protéger très simplement.