BBCode

Répondre
Keika
le 01/09/2006 à 18:23
Keika
salut.

J'ai mis l'astuce BBCode dans le script de news de mon site (le script de news étant tiré de la partie "Comment faire"...)

alors j'ai réussi à afficher le bbcode de lien normalement seulement pour cela il a fallut que je retire cette partie du code:

htmlentities( )


je me retrouve avec le bon affichage pour le bbcode malgres un léger défaut pour les sauts de lignes, qui sont devenus plus grands.

Est-ce grave d'avoir enlevé ca ? Y aurait-il une autre solution, sans avoir à enlever cette partie ?

Merci d'avance.

K.
Le PHP --> C'est dur !
Bzh
le 01/09/2006 à 20:24
Bzh
OUI ! C'est très grave d'avoir enlever ça...

Le bb-code est une porte grande ouverte sur les attaques XSS !! Il ne faut pas se planter !!!!

htmlentities est à utilisé avant le passage par les expressions régulières qui elles vont rajouter les balises comme tu le souhaites...

Mais il faut absolument la garder, c'est elle qui protêge des attaques...

Tchuss...
Keika
le 01/09/2006 à 21:22
Keika
Le probleme est le suivant.

voici ma fonction pour générer le bbcode :

<?php
function creer_bbcode ($string) {

$string = htmlentities ($string);

$string = preg_replace_callback("/[lien=(.*?)](.*?)[/lien]/is",'bbcode_lien2', $string);
$string = preg_replace_callback("/[lien](.*?)[/lien]/is",'bbcode_lien', $string);

//Pour mettre en gras le texte entre
$string = preg_replace("([g](.+?)[/g])is",'<strong>$1</strong>', $string);
//Pour souligner le texte
$string = preg_replace("([u](.+?)[/u])is",'<u>$1</u>', $string);
//Pour mettre en italique le texte entre [i][/i]
$string = preg_replace("([i](.+?)[/i])is",'<i>$1</i>', $string);

return ($string);
}
?>


comme tu le vois il y a déjà une fonction htmlentitites dedans... j'en ai une autre dans le script de news lors de la sortie de la base de donnée :

echo '<div class="news">' , nl2br(stripslashes(htmlentities(trim($data['texte_news'])))) , '</div>';


alors il y a conflit... je pense que le htmlentities pour les news comprends le bbcode comme un simple texte alors il me l'affiche... parceque j'ai bien:

['lien]http://lesite.com[/lien] (l'erreur de ' étant fait expres pour ne pas que le bbcode du phpfacile l'interprete ^_^)

alors dans ce cas, comment faire ?
Le PHP --> C'est dur !
moogli
le 02/09/2006 à 13:40
moogli
enlève z'en un :)

Je voterias pour celui de la fonction, comme ça tu serais obligé de la mettre partout et ça t'éviteras de l'oublier quelque part !

@+
Il en faut peu pour être heureux !!!!!
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours