Petit probleme facile à résoudre

Résolu
minibenji Messages postés 64 Date d'inscription mercredi 15 février 2006 Statut Membre Dernière intervention 24 novembre 2010 - 1 janv. 2009 à 19:12
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 - 2 janv. 2009 à 11:05
Bonjour,
j'ai confectioné cette petite shoutbox, mais lors de l'affichage des messages, les saut de ligne se transformes en simple espaces...


voici une version simplifié de mon code...


le visionnement :
$sql = "SELECT * FROM `wall_tbl` ORDER BY `id` DESC LIMIT 0 , 10";
$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());
while($data = mysql_fetch_assoc($req))
{
?>
 <? echo $data['user']; ?> à: <? echo $data['date']; ?>

   
 <? echo $data['texte']; ?>

    <?
}


le adding de post:


 $sql = "INSERT INTO wall_tbl VALUES('','".$_POST['user']."','".$_POST['message']."','".$quand."','".$_SERVER['REMOTE_ADDR']."')";
 $req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());
 include"index.php";


** ceci est très simplifié, bien évidement
en passant, dans la table, l'endroit ou les messages sont mit, le type d'entrée est mit a "TEXT" et lorsque je regarde la base, les enter sont là!


merci d'avance...

6 réponses

kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
1 janv. 2009 à 20:20
Salut,

D'où proviennent tes messages ? les champs textarea d'un formulaire ?
As tu des '
' quand tu regardes directement dans ta base ?

9 chances sur 10 que si tu fais nl2br($_POST['message']); avant l'insertion ça fonctionne :-)

Cordialement,

Kohntark-
3
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
2 janv. 2009 à 11:05
$message = strip_tags($_POST['message']);
$message = mysql_real_escape_string($message);
$message = nl2br($message);

Tu utilises ensuite $message à la place de $_POST['message'] pour l'insertion :
    - les données sont protégées contre l'injection de code
    - les /n sont remplacés par des

    - les données sont protégées pour l'insertion dans la base

Cordialement,

Kohntark-
3
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
1 janv. 2009 à 20:36
Et puis :
pourquoi fais tu ça :
while($data = mysql_fetch_assoc($req))
{
?>
 <? echo $data['user']; ?> à: <? echo $data['date'];
?>

   
 <? echo $data['texte']; ?>

    <?
}
pourquoi pas ça :
while($data = mysql_fetch_assoc($req))
{
 echo ''.$data['user'].' à: '.$data['date'].'

   
 '.$data['texte'].'

';

}
C'est bien plus lisible et facile à écrire, non ?

Et ça aussi :
$sql = "INSERT INTO wall_tbl
VALUES('','".$_POST['user']."','".$_POST['message']."','".$quand."','".$_SERVER['REMOTE_ADDR']."')";
=>
$sql = "INSERT INTO wall_tbl
VALUES('','$_POST['user']','$_POST['message']','$quand','$_SERVER['REMOTE_ADDR']')";

Par ailleurs, pense à traiter toutes tes variables qui proviennent des formulaires. Si tu ne le fais pas il est possible d'insérer des données qui peuvent servir à pirater ton site. Et ne laisse jamais un mysql_error() (uniquement pour le debug) car là aussi il y a un pb de sécurité. Si il y a une erreur sur la requête, le mysql_error() risque de divulger des informations sur la structure de ta base, et ça c'est pas bon :-)
Regarde la fonction mysql_real_escape_string()

Kohntark -
0
minibenji Messages postés 64 Date d'inscription mercredi 15 février 2006 Statut Membre Dernière intervention 24 novembre 2010
1 janv. 2009 à 20:51
comme j'ai dit, c'est une simplifiquation, avec tout les codes html, ca devient plus simple, mais dont truc serraisse?
a.$_POST['message']=nl2br($_POST['message']);
b.nl2br($_POST['message']);
juste pour savoir
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
minibenji Messages postés 64 Date d'inscription mercredi 15 février 2006 Statut Membre Dernière intervention 24 novembre 2010
2 janv. 2009 à 02:48
ok la reponse est "A"
0
minibenji Messages postés 64 Date d'inscription mercredi 15 février 2006 Statut Membre Dernière intervention 24 novembre 2010
2 janv. 2009 à 02:48
ok la reponse est "A"
0
Rejoignez-nous