Des anti slashes de trop !

diabolo
Invité n'ayant pas de compte PHPfrance

06 oct. 2005, 11:13

Bonjour à tous :D

J'ai créer une zone administrateur permettant de mettre à jour une page d'un site pour une association de médecin.

Cette page est divisée en plusieurs parties, car ils sont plusieurs groupes.
Chaque groupe possede sa propre zone administrateur.

Pour le premier et deuxième groupe pas de problème tout fonctionne, pour le troisieme groupe l'affichage comporte plein de anti slash. J'ai pourtant repris le même code pour l'ensemble des groupes en ne modifiant que l'accès à la table de la base.

Voici le code qui affiche le contenu de la base sur le site.C'est le code php pour les trois premiers groupes. Il doit y avoir une différence entre les deux premiers goupes et le troisieme :

1 er groupe ********************************
<?php 
    
   echo '<table border=0 width="99%">'; 
    
   echo '<tr>'; 
   echo '<td align="justify">'.nl2br($data['contenu']).' </td>'; 
   echo '</tr>'."\n"; 

                echo '<tr>'; 
   echo '<td>&nbsp;</td>'; 
   echo '</tr>'."\n"; 

   echo '<tr>'; 
   echo '<td align="justify"><b>Prochaines réunions:</b><br/>'.nl2br($data['formation']).'</td>'; 
   echo '</tr>'."\n"; 
    
   echo '<tr>'; 
   echo '<td>'; 
   echo '<a class="a4" href="mailto:[email protected]?subject=Demande de réferentiel groupe de pairs">Nous écrire</a>'."\n"; 
   echo '</td>'; 
   echo'</tr>'."\n"; 

   echo '</table>'."\n"; 
    
    } 
?>
2 eme groupe **************************************
 <?php 
   echo '<table border=0 width="99%">'; 

   echo '<tr>'; 
   echo '<td align="justify">'.nl2br($data['contenu']).' </td>'; 
   echo '</tr>'."\n"; 

                echo '<tr>'; 
   echo '<td>&nbsp;</td>'; 
   echo '</tr>'."\n"; 

   echo '<tr>'; 
   echo '<td align="justify"><b>Prochaines réunions:</b><br/>'.nl2br($data['formation']).'</td>'; 
   echo '</tr>'."\n"; 
    
   echo '<tr>'; 
   echo '<td>'; 
   echo '<a class="a4" href="#">Nous écrire</a>'."\n"; 
   echo '</td>'; 
   echo'</tr>'."\n"; 

   echo '</table>'."\n"; 

    } 
?>
3eme groupe ***************************************
<?php 
   echo '<table border=0 width="99%">'; 

   echo '<tr>'; 
   echo '<td align="justify">'.nl2br($data['contenu']).' </td>'; 
   echo '</tr>'."\n"; 

                echo '<tr>'; 
   echo '<td>&nbsp;</td>'; 
   echo '</tr>'."\n"; 

   echo '<tr>'; 
   echo '<td align="justify"><b>Prochaines réunions:</b><br/>'.nl2br($data['formation']).'</td>'; 
   echo '</tr>'."\n"; 
    
   echo '<tr>'; 
   echo '<td>'; 
   echo '<a class="a4" href="#">Nous écrire</a>'."\n"; 
   echo '</td>'; 
   echo'</tr>'."\n"; 

   echo '</table>'."\n"; 

    } 
?>
Merci pour votre aide,

diabolo

Mammouth du PHP | 19672 Messages

06 oct. 2005, 11:20

Utilise un stripslashes:
stripslashes(nl2br($data['formation']))
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 1776 Messages

06 oct. 2005, 11:40

Moi je proposerais en complément de passer tes entrées en bdd au htmlentities :wink:

Eléphanteau du PHP | 38 Messages

06 oct. 2005, 11:57

Merci pour vos réponses,

La ligne de code suivante ne fonctionne pas :
echo '<td align="justify">'.stripslashes(nl2br($data['formation'])).' </td>';
Elle ne permet plus l'insertion de donnée dans la base.
Alors que l'ancienne version fonctionne mais avec les anti-slashes.
echo '<td align="justify">'.nl2br($data['contenu']).' </td>';
Moi je proposerais en complément de passer tes entrées en bdd au htmlentities
Qu'est ce que les htmlentities ?

diabolo

Mammouth du PHP | 19672 Messages

06 oct. 2005, 11:59

Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 38 Messages

06 oct. 2005, 12:32

Ok je vais étudier sa.
Pourrais tu me dire ce qui cloche dans la ligne de code que j'ai ecrit avec stripslashes ?

diabolo

Mammouth du PHP | 19672 Messages

06 oct. 2005, 12:33

Pourrais tu me dire ce qui cloche dans la ligne de code que j'ai ecrit avec stripslashes ?
À première vue rien, il faudrait suivre le code pour voir une éventuelle boulette quelque part :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 19 Messages

06 oct. 2005, 12:52

Salut.
Je te conseille de faire ton tableau en html plutot qu'en php

Eléphanteau du PHP | 38 Messages

06 oct. 2005, 18:53

Si je vois des \ à l'affichage alors en principe je devrai rajouter stripslashes() qui permet de les virer .

Mais lorsque je veux ajouter dans la db mon texte qui possède des ' il n'y as plus d'insertion donc je dois rajouter des addslashes() dans mon code au moment de l'insertion dans la base de donnée.

Donc de faire htmlentities() en plus lors de l'insertion.

Avec ceci htmlentities et addslashes

Mais comment écrire le bout de code sachant que pour insérer dans la base j'utilise ceci :

Code : Tout sélectionner

$text = mysql_escape_string($contenu); $date = mysql_escape_string($formation); $query = "UPDATE groupe3 SET contenu='$text', formation='$date' "; $res = mysql_query($query) or die(mysql_error());
Pour l'affichage au final je vais mettre ceci :

Code : Tout sélectionner

echo '<td align="justify">'.stripslashes(nl2br($data['formation'])).' </td>';
J'aurai besoin d'un peu d'aide pour la syntaxe de htmlentities avec mon bout de code.

Merci

Diabolo

Mammouth du PHP | 19672 Messages

06 oct. 2005, 18:56

Je suggère une visite sur ce tuto de PHPFrance
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

19 oct. 2005, 17:49

:D Bonjour,

Merci pour le tutaux, j'ai réussi à me tirer d'affaire !

@ plus !