php texte bbcode et html

php texte bbcode et html - PHP - Programmation

Marsh Posté le 16-02-2006 à 20:39:55    

bonsoir a tous ,
 
voila , j'ouvre se thread pour vous demander de l'aide. J'expose en quelques mots mon probleme, j'ai un site en php que en php avec mysql entre autre , et avec des sessions , chaque internaute a la possibilité de creer une description de soi personnel  , il peut allez sur la page , ecrire et sauvegardez/envoyer ses données , qui ensuite s'affiche sur la page regarderuser.php?id=287... , mais le texte s'affiche sans retour a la ligne (= <br> )  ce qui est assez ennuyant , l'user s'il ecrit " slt , je m'appelle ralf <br> et je vien de france" affichera bien avec le retour a la ligne , mais je voudrais savoir comment faire pour que l'user ne doivent pas mettre le code <br>. cela doit venir du formulaire d'envoi et peut etre de celui qui affichera la donnee.
 
ensuite , certain internaute qui auront un certain privilege pourront mettre certain BBcode , telque noir,barre,souligner,italique... , je voulais savoir comment cela est possible que je code un tel script.
 
voici le script formulaire d'envoi de donnee sur la page : edit.php
 
<html>  <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <?php if (isset($_GET['id_destinataire'])){ $valeur = $_GET['id_destinataire']; }else { $valeur = ''; }echo '<input type="hidden" name="id_destinataire" value='.$valeur.' />';?>
      <input type="hidden" name="action" value="inserer" />
         <p><textarea cols=60 rows=11 input type="text" name="message" /></textarea> </p>
          <p><input type="submit" name="Submit" value="Envoyer" /></p>
             </form>   </html>
 
enfait ceci est celui du message , mais qui revien a quelque chose pret de la fiche descriptive de l'internaute
 
merci de pouvoir m'aidez sur ca  :)

Reply

Marsh Posté le 16-02-2006 à 20:39:55   

Reply

Marsh Posté le 17-02-2006 à 01:52:26    

nl2br

Reply

Marsh Posté le 17-02-2006 à 14:33:31    

désolé je ne comprend pas le nl2br

Reply

Marsh Posté le 17-02-2006 à 14:37:12    

[:bbcmoi] Lis la doc, cherche sur le forum ça a déjà été demandé.....
 
Imaginons que la chaîne saisie par l'utilisateur est dans $var.
Pour l'afficher, au lieu de faire :
echo $var;
tu fais :
echo nl2br($var);
 
C'EST POURTANT PAS COMPLIQUÉ!!!


Message édité par dwogsi le 17-02-2006 à 14:39:09
Reply

Marsh Posté le 17-02-2006 à 14:58:53    

ok , merci compris et ca fonctionne , par contre pour la deuxieme partie qui est de l'activation/authorisation de certain bbcode pour un privilegeX qui donne droit a ces bbcode? :)

Reply

Marsh Posté le 17-02-2006 à 15:00:55    

je sais pas...
...essais ça peut être :
 
echo bbcode2html($var);


Message édité par dwogsi le 18-02-2006 à 01:40:55
Reply

Marsh Posté le 18-02-2006 à 00:41:26    

ca ne fonctionne pas , et puis en faisant ca , tout les internautes auront droit aux bbcode non? je pensais a faire un champ ' privilege' avec dedans oui/non , et qu'il y ai verification si l'utilisateur est 'oui' , si il est oui le bbcode fonctionne , si non les bbcode ne vont pas , est ce possible?et comment?
 
merci:)

Reply

Marsh Posté le 18-02-2006 à 01:25:21    

tu crées une classe qui gère les bbcode et qui test les expressions régulières en fonctions du level de la personne.
 
tu fais genre :
 
function defaultBBCode() { }
function adminBBCode() { }
 
et dans l'appel général genre :
 
function genererBBCode() { } tu test la valeur de privilige que t'auras passé en paramètre à l'objet pour savoir si c un user normal ou admin.

Reply

Marsh Posté le 18-02-2006 à 01:44:40    

rut a écrit :

ca ne fonctionne pas , et puis en faisant ca , tout les internautes auront droit aux bbcode non? je pensais a faire un champ ' privilege' avec dedans oui/non , et qu'il y ai verification si l'utilisateur est 'oui' , si il est oui le bbcode fonctionne , si non les bbcode ne vont pas , est ce possible?et comment?
 
merci:)


Désolé je suis pas sympa... Ca ne risquait pas de marcher parce que ce n'est pas une fonction qui existe sauf si bien sur tu la créée toi même ou avec je ne sais quelle extension, objet, class et tout le tralalala... Bref si tu veux intégrer l'interprétation du bbcode dans tes pages, c'est regex & co. Ensuite pour la méthode, ba... classe, fonction, etc... Je te laisse te reporter à la méthode ci-dessus.

Reply

Marsh Posté le 18-02-2006 à 11:08:28    

dwogsi a écrit :

ce n'est pas une fonction qui existe


 
Remarque, ca viendra peut-être un jour :p

Message cité 1 fois
Message édité par erel69 le 18-02-2006 à 11:59:45

---------------
France Hardware | Degroup Test | Degroup News
Reply

Marsh Posté le 18-02-2006 à 11:08:28   

Reply

Marsh Posté le 21-02-2006 à 17:42:01    

voila , je me demandais apres mur reflection si c'etait pas possible  de faire quelque chose ainsi , a la lecture de la donner
 
$info= tout ce que l'user a mis dans sa description
<?php
   
$line = $_GET['id'];
 
if( $line['privilege']== "oui" || $line['privilege']== "oui" )
 {  
echo untruk $info
}
else
{
echo $info
}
 ?>
 
ainsi c'est bien ce que je veux, un user qui va voir la description d'un autre, si l'user qui a la description est membre special , les autres et lui pourront lire les bbcodes sur la description d'un membre et que d'un membre, si il n'est pas , les bbcodes ne fonctionnerons pas , est ce que je dis juste?  
 
alors il y a le "untruk" , je veux dire par la quelque chose comme "nl2br" qui met les<br/> , mais que ici jouerai un role sur l'activation des bbcodes , est ce que c'est toujour possible?  
 
je ne vois pas bien comment faire avec ceci dit plus haut
 
"function defaultBBCode() { }  
function adminBBCode() { }  
 
et dans l'appel général genre :  
 
function genererBBCode() { }
"
 
merci a tous pour vos conseils/reponses
 
:)

Message cité 1 fois
Message édité par rut le 21-02-2006 à 17:44:39
Reply

Marsh Posté le 21-02-2006 à 19:41:15    

erel69 a écrit :

Remarque, ca viendra peut-être un jour :p


 
Ca existe déjà dans PEAR il me semble, même si je l'ai jamais essayer.

Reply

Marsh Posté le 21-02-2006 à 20:15:41    

rut a écrit :


if( $line['privilege']== "oui" || $line['privilege']== "oui" )


 
ya que moi qui voit 2 fois la meme chose ?  :heink:


Message édité par benamoubeach le 21-02-2006 à 20:15:56
Reply

Marsh Posté le 21-02-2006 à 20:47:00    

non sorry  
 
<?php  
   
$line = $_GET['id'];  
 
if( $line['privilege']== "oui" )  
 {  
echo untruk $info  
}  
else  
{  
echo $info  
}  
 ?>  
 
vous avez des idees en partant de ce principe?

Reply

Marsh Posté le 21-02-2006 à 23:28:42    

voila j'ai travailler sur cette idee 3heure non stop , j'obtien quelque chose du style:
 
j'ai sur la page qui voit la description ceci:
<?php  
$line = $_GET['id'];  
if( $line['privilege']== "admin" )  
 {    
adminBBcode()
}  
elseif($line['privilege']=="default" )
{  
defaultBBcode()
}
 
 
$line = $_GET['id'];  
$req = "SELECT description FROM utilisateur WHERE id_user=$line";
$ret = mysql_query ($req) or die (mysql_error ());
while ( $col = mysql_fetch_row ($ret) )
  {
 
function defaultBBCode() {
$col[0] = preg_replace('#\[ b](.+?)\[ /b]#si','[ b]$1[ /b]',$col[0]);
 $col[0] = preg_replace('#\[ i](.+?)\[ /i]#si','[ i]$1[  /i]',$col[0]);  
     
}
function adminBBCode() {  
$col[0] = preg_replace('#\[ b](.+?)\[ /b]#si','< strong>$1</ strong>',$col[0]);
 $col[0] = preg_replace('#\[ i](.+?)\[ /i]#si','< em>$1</ em>',$col[0]);  
     
}
 
echo nl2br ".$col[0].";
}
?>
 
j'espere que ca pourrait donné quelque chose, vous en penser quoi?
quand c'est default j'ai mis que [b] devient [b] etc
quand c'est admin j'ai mis que [b] (que l'user met en desciption) devient <b> ainsi son texte devien en gras contrairement a l'autre qui affifera [b] donc les BBcode ne fonctionnerons pas
 
merci de votre soutient:)


Message édité par rut le 21-02-2006 à 23:30:48
Reply

Marsh Posté le 21-02-2006 à 23:30:35    

Plus qu'à définir untruk :D
 
Remarque, deux secondes de recherche sur google et tu as au moins un début de script pour les balises les plus courantes //edit, oh ben tiens, y en avait même un dans les commentaires de la doc, d'exemple
 
En passant, supposons un gars qui n'a pas les privilèges requis, tu vas lui afficher quoi ? [ b]blablabla[ /b] ou juste blablabla ? Parce que le premier cas, c'est pas le top en terme de lisibilité :)


Message édité par naceroth le 21-02-2006 à 23:34:19
Reply

Marsh Posté le 21-02-2006 à 23:33:49    

je desirerai afficher le meme texte qu'il a mis , mais sans les bbcode, donc si il a mis blablabla mais entre [b] afin que se soit en gras, que ca affiche le blablabla mais donc plus en gras, mais j'ai poster un message en meme temp que toi , je pense que le petit script que j'ai fait peux donner quelque chose de meilleur

Reply

Marsh Posté le 21-02-2006 à 23:39:03    

Oui, enfin, ta fonction defaultBBCode, elle sert strictement à rien, à part ralentir le script, le masque et la chaine de remplacement étant identique :)

Reply

Marsh Posté le 21-02-2006 à 23:50:56    

c'etait le but de faire la chaine de remplacement identique mais c'est vrai je n'ai pas pensez que ca devenait inutile , donc je peux laisser entre les accolade pour la fonction defaultBBcode un vide autrement dit rien ?
 
est ce que mon code fonctionnerai? car je n'ai pas la possibilité de le tester ce soir?
 
je me demandai , lorsque je mets ceci sur ma page de description : < b> coucou </ b> je vois le coucou en gras , mais biensur ca je ne le veux pas car les non admin mettrai sous cette forme et aurai leur texte en gras par exemple, alors je me pose la question , soit il existe quelque chose pour empecher ce format , mais je ne pense pas , ou alors faire quelque chose ainsi:
$col[0] = preg_replace('#\ < b>(.+?)\< /b>#si','[ b]$1[/b]',$col[0]);  
 
donc sometoute juste le contraire , que je plasserai dans function adminBBcode et function defaultBBcode
 
qu'en penses tu ou qu'en pensez vous?
 
:)

Reply

Marsh Posté le 22-02-2006 à 11:59:32    

naceroth a écrit :

Ca existe déjà dans PEAR il me semble, même si je l'ai jamais essayer.


Dites moi que c'est pas vrai!!!!
Et dire que je me suis fait chier à coder une fonction pour interprêter de le BBCode...
Bon ba je vais aller chercher une corde et... enfin vous savez.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 22-02-2006 à 12:16:57    

http://perso.wanadoo.fr/xavier.mannino/matelotage/fot/pendu.gif

Reply

Marsh Posté le 22-02-2006 à 12:32:18    

La 4 sans hésitation.
De mémoir (ou d'autre chose d'ailleur), est ce que quelqu'un sais le nom de cette fonction?


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 22-02-2006 à 16:20:32    

dwogsi a écrit :

Dites moi que c'est pas vrai!!!!
Et dire que je me suis fait chier à coder une fonction pour interprêter de le BBCode...
Bon ba je vais aller chercher une corde et... enfin vous savez.


 
De mémoire, y en a même 2, la version de PEAR (HTML_BBCodeParser je crois) et un UBBCode chez phpclasses.org.
 
Mais comme toi, je me suis fait chier à intégrer une fonction perso pour ça  :pfff:  

Reply

Marsh Posté le 22-02-2006 à 16:32:27    

rut a écrit :

je me demandai , lorsque je mets ceci sur ma page de description : < b> coucou </ b> je vois le coucou en gras , mais biensur ca je ne le veux pas car les non admin mettrai sous cette forme et aurai leur texte en gras par exemple, alors je me pose la question , soit il existe quelque chose pour empecher ce format , mais je ne pense pas

[:sh@rdar]  
htmlentities : http://fr2.php.net/manual/fr/function.htmlentities.php
strip_tags : http://fr2.php.net/manual/fr/function.strip-tags.php

Reply

Marsh Posté le 22-02-2006 à 17:19:33    

voila j'ai ceci maintenant:
 
<?php
$line = $_GET['id'];
if( $line['vip']== "oui" )
 {
 adminBBcode() ;
}
else if($line['vip']=="non" )
{
 defaultBBcode() ;
}
 
 
$line = $_GET['id'];
$req = "SELECT description FROM utilisateurs WHERE id_user=$line";
$ret = mysql_query ($req) or die (mysql_error ());
while ( $col = mysql_fetch_row ($ret) )
  {
 
function defaultBBCode() {
$col[0] = preg_replace('#\(.+?)\#si','$1',$col[0]);
 $col[0] = preg_replace('#\(.+?)\#si','$1',$col[0]);
 
   }
function adminBBCode() {
$col[0] = preg_replace('#\(.+?)\#si','<b>$1</b>',$col[0]);
 $col[0] = preg_replace('#\(.+?)\#si','<em>$1</em>',$col[0]);
 
   }
 
echo  nl2br (htmlentities($col[0] ));
}
?>
 
 
je teste , et le [b] n'est pas remplacer par<b> lorsque le membres est oui , et aussi avec le htmlentities si on encode <b>< /b> ca ne devient pas en gras comme souhaiter, que dois je faire pour que mon script fonctionne?:)

Reply

Marsh Posté le 22-02-2006 à 17:24:34    

La lecture d'un bon tutoriel ne serait visiblement pas du superflux. ;)
 
 
Pour que ton script fonctionne, il faut indiquer à ta fonction la valeur à utiliser. Là, tu ne lui indique rien.
De plus, en php, les variables sont interne à une fonction et ne sont pas partagé avec l'extérieur. les $col de tes fonctions n'ont donc rien à voir avec le $col qui est à l'extérieur des fonctions.  
 
Pour plus de détail voir doc : http://fr2.php.net/manual/fr/language.functions.php
 
A noter qu'une fonction qu'elle se trouve au début du fichier, à la fin ou au milieu du code et même dans un fichier à l'autre bout du disque dur se comportera exactement de la même maniére. Pour faciliter la lecture du code, il est conseillé de toutes les mettre au début ou à la fin des fichiers et de mettre dans un autre fichier celles qui seront utilisé par plusieurs fichiers.
 
EDIT fausse manip au milieu de la saisie du texte.


Message édité par omega2 le 22-02-2006 à 17:32:23
Reply

Marsh Posté le 22-02-2006 à 19:08:56    

en fait, t'es pas obligé d'appeler le defaultBBCode() . Quand je t'ai parlé de ca, je pensais que les utilisateurs normaux avaient le droit a quelques balises comme B ou I .

Reply

Marsh Posté le 22-02-2006 à 19:15:34    

oui je m'aperçois aussi , parr contre je ne vois pas ce que je dois faire ( en rapport avec omega2)

Reply

Marsh Posté le 22-02-2006 à 19:26:11    

déclare tes fonctions au début de ton fichier et appelle les genre adminBBCode($col)

Reply

Marsh Posté le 24-02-2006 à 14:55:31    

mon probleme vien de la condition a mon avis , ceci est bien juste?:
 
<?php
$line = $_GET['id'];
if($line['vip']=="oui" )  
{     ?>
  <b>test-oui</b>
       <?php
}
     ?>
 
 
et  
 
<?php
$line = $_GET['id'];
if($line['vip']=="non" )
 {     ?>
    <b>test-non</b>
        <?php
 }
        ?>
 
quand je test , que se soit des utilisateurs qui  sont oui ou non , ca n'affiche dans aucun cas soit test-oui ou test-non
 
pourquoi?

Reply

Marsh Posté le 24-02-2006 à 14:59:24    

fait un "print_r" de $_GET et un "print_r" de $line.
Ca métonerait fort que la case $_GET['id']['vip'] existe.

Reply

Marsh Posté le 24-02-2006 à 15:28:26    

donc la page est regarder.php?id=1
 
print_r($_GET) : Array ( [id] => 1 )  
 
print_r($line) : 1

Reply

Marsh Posté le 25-02-2006 à 17:45:12    

quelqu'un a une idée? , bon carnaval a tous aussi :D
 
 
edit : je viens de remarquer que si c'est regarder.php?id=23
 
ca me donne 2
 
?id=3837
 
ca me donne 3


Message édité par rut le 25-02-2006 à 18:13:45
Reply

Marsh Posté le 03-03-2006 à 01:16:34    

petit up

Reply

Marsh Posté le 03-03-2006 à 09:37:37    

rut a écrit :

[...]
<?php
$line = $_GET['id'];
if($line['vip']=="non" )
[...]


 
$line prend la valeur de $_GET['id'], donc $line n'est pas un tableau.
Et tu test ensuite $line['vip']. Comment veux tu que ça marche?

Reply

Marsh Posté le 03-03-2006 à 17:22:04    

je dois faire ceci alors ? :
<?php
$line = $_GET['id']['vip'];
if($line['vip']=="non" )
...
?>
 
ou bien ceci :
<?php
if( isset($_GET['id']) )
{
$vip = intval ($_GET['id']);
}
if($vip['vip']=="non" )
...
?>

Reply

Marsh Posté le 03-03-2006 à 17:24:23    

Je crois que je n'ais peut être pas très bien suivit le fonctionnement de ton script...

Reply

Marsh Posté le 03-03-2006 à 18:30:37    

dwogsi a écrit :

Je crois que je n'ais peut être pas très bien suivit le fonctionnement de ton script...


 
Je te rassure, visiblement, lui non plus :D
 
rut, on se tue à te dire que ton $_GET['id'] n'est pas un tableau, tu n'obtiendras jamais le résultat que tu recherches tant que tu essayeras de t'en servir comme quelque chose qu'il n'est pas.

Reply

Marsh Posté le 03-03-2006 à 18:47:11    

d'accord , comment dois je proceder alors?

Reply

Marsh Posté le 03-03-2006 à 18:59:00    

ben là, tu récupères un id d'un utilisateur, je suppose que les privilèges dont il dispose sont stockés dans la bd ? Donc, ton traitement doit plus ressembler à (d'après le bout de code que tu mets plus haut)

Code :
  1. $line = $_GET['id'];
  2. $req = "SELECT vip FROM utilisateurs WHERE id_user=$line";
  3. $ret = mysql_query ($req) or die (mysql_error ());
  4. if ( $col = mysql_fetch_array($ret) )
  5.   { // ton privilèges dans $col['vip']
  6.   }

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed