Affichage du texte enregisté dans une base de donnée.

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Affichage du texte enregisté dans une base de donnée.

par chrislabricole » 09 nov. 2008, 11:56

Oui, c'est vrai, en fait ça dépend, c'est si un formulaire que pour les admin qui saches le html, pas de prob, mais si c'est pour tout le monde, c'est la que ça pose problème, car une personne peut très bien faire ça :
<script>alert('Faille XSS');</script>
Et voilà, tu as une belle faille XSS, (regarde sur Internet se que l'on peut faire avec une faille XSS...)
Donc, pour résoudre ça, c'est là que le BBCode est bien ;)
En fait, pas vraiment ça pour ta solution, il faut utiliser les REGEX, il existe beaucoup beaucoup de tuto sur ça ;)
N'oublie pas, pas de htmlentities() ou autre y compris nl2br() AVANT l'enregistrement ;)

par mars77 » 09 nov. 2008, 11:43

Merci pour ton aide,

Effectivement j'avais à l'enregistrement un htmlentities() et maintenant cela fonctionne.

Juste encore une petite question . Charabia plus haut m'a écrit que c'etait risqué de mettre du HTML dans mon formulaire et me conseil d'utiliser le BBcode.

Pourquoi et comment cela s'utilise.
D'après ce que j'ai compris il faut remplacer le <> en [] Il y a autre chose a modifier ????

Merci encore.

par chrislabricole » 09 nov. 2008, 11:17

Et si tu vas explorer ta table avec phpmyadmin par exemple, que vois-tu ?
Tu-dois surement voir quelque chose du genre :

Code : Tout sélectionner

<b>test</b>
Non ?

Moi je pense, que le problème ne se situe pas à la "prise" des données mais plutôt à l'enregistrement ;)

Lors de l'enregistrement, il ne faut pas faire de htmlentities(), pas de htmlspecialshars(), et pas non plus de nlbr() !
tout ça s'effectue à l'obtention des données ;)
Donc ça fais que tu vas enregistrer tes données avec les < et > et pas < et >, ça s'est transformé comme ça parce-que tu as du faire un htmlentities() ;)

par mars77 » 09 nov. 2008, 10:56

Hello,

J'ai essayé aussi avec du BBCode mais rien a faire cela ne fonctionne pas.

Il écrit aussi test

Je récupère mes données comme ça:

Code : Tout sélectionner

$select ='SELECT * FROM forum WHERE id = "'.$id.'"'; $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); $row = mysql_fetch_array($result); $parution = delai($row ['delai']); $id1 = $row['reponse_id']; $sujet1 = $row['sujet']; ?> <!-- Cadre du centre--> <table bordercolor="CCCCCC" bgcolor="#00639C" border="1" cellspacing="0" cellpadding="0" width="480" align="center" > <tr><td><br> <table width="460" align="center" border="0" bgcolor="#FFFFFF" bordercolor="#000000" cellspacing="1" cellpadding="1"> <tr><td bgcolor="#FFFFFF" align="center" class="mm4"><a href="forumnouveau.php">Ajouter un nouveau message</a> || <a href="forum.php">Retour a la liste des messages</a></td> </tr> <!-- tableau de mise en page forum affichage--> <table width="500" border="0" cellspacing="0" cellpadding="0"> <tr bgcolor="#00639C"><td align="center" height="10"></td></tr> <tr><td align="center" bgcolor="#00639C"> <table width="480" border="0" bgcolor="#FFFFFF" bordercolor="#000000" cellspacing="1" cellpadding="1"> <tr><td bgcolor="#0099FF" align="center" valign="middle"><b>Le Message</b><br><?php echo ''.$row["smeille"].'';?> <?php echo "<span class='mm4'>".stripslashes($row["sujet"])." &nbsp Transmis par : ".stripslashes($row["pseudo"])." le, " .$parution. " ".stripslashes($row["temps"])."</span>" ;?></td></tr> <tr><td bgcolor="#000000"><table width="480" border="0" bgcolor="#FFFFFF" bordercolor="#FFFFFF" cellspacing="1" cellpadding="4" > <tr><td bgcolor="#00639C" >[color=red]<?php echo "<span class='mm4' ><p align='justify'>&nbsp ".$row["message"]." </p></span> " ;?>[/color]</td></tr> </table>
Je me demande si j'ai pas un prob. avec le format. Mes pages sont en .php ??
Merci pour votre aide

par charabia » 08 nov. 2008, 15:58

Laisser la possibilité de mettre du HTML dans ton formulaire est un peu beaucoup risqué mars77.

Fait plutôt un genre de bbcode si tu veux afficher du gras..etc

par sylvaing26 » 08 nov. 2008, 14:48

donne nous toute ta requete stp

par mars77 » 08 nov. 2008, 14:42

J'ai enlevé le htmlspecialchars mais les balises <b> et </b> s'affichent toujours.

par Aureusms » 08 nov. 2008, 14:00

Oui finalement je crois :lol:

par sylvaing26 » 08 nov. 2008, 13:59

Bon ba Aureusms tu as ta reponse maintenant ! :D
Enlève ton htmlspecialchars
<?php echo "<span class='mm4'><p align='justify'>&nbsp  ".$row["message"]." </p></span> " ;?> 

par Aureusms » 08 nov. 2008, 13:59

Bien et si tu l'enlèves ?

par mars77 » 08 nov. 2008, 13:57

Merci déjà pour votre aide.

Voilà le code que j'utilise pour récupérer mon texte.

Code : Tout sélectionner

<?php echo "<span class='mm4'><p align='justify'>&nbsp ".htmlspecialchars ($row["message"])." </p></span> " ;?>
et le résultat à l'affichage.

<b>teste</b>

J'aimerai que mon texte vient s'afficher en gras .

par sylvaing26 » 08 nov. 2008, 13:57

C'est pour verifier ca que je demande son code pour voir comment il fait ca

par Aureusms » 08 nov. 2008, 13:49

Ben oui je sais. Mais si i lrentre <b>test<b> dans sa base et que le browzer internet ne le traite pas, cela veut dire qu'il y a qq part un htmlspecialchar qui protège le tout... non ?

par sylvaing26 » 08 nov. 2008, 13:47

Je pense que c'est l'effet inverse de cette fonction qu'il souhaite obtenir, avec ta fonction il aura toujours ecrit <b>texte</b>
Ca doit surement venir au niveau ou tu appelle le texte de ta base dans ton code html.
Pour cela il faudra la source de ton code s'il te plait

par Aureusms » 08 nov. 2008, 13:43

regarde vers htmlspecialchar() : http://fr.php.net/htmlspecialchars