JeuWeb - Crée ton jeu par navigateur
[Résolu] Problème de retours à la ligne - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu] Problème de retours à la ligne (/showthread.php?tid=2175)



[Résolu] Problème de retours à la ligne - Reaven - 21-12-2007

Voilà,

Je comprend pas dans mon code pour mon livre d'or j'ai cette partie là:

Code PHP :
<?php 
if (isset($_POST['pseudo']) AND isset($_POST['message']))
{
$login = mysql_real_escape_string(htmlspecialchars($_POST['pseudo'])); // On utilise mysql_real_escape_string et htmlspecialchars par mesure de sécurité
$message = mysql_real_escape_string(htmlspecialchars($_POST['message'])); // De même pour le message
$message = nl2br(stripslashes($message)); // Pour le message, comme on utilise un textarea, il faut remplacer les Entrées par des <br />

// On peut enfin enregistrer :o)
mysql_query("INSERT INTO livreor VALUES('', '" . $login . "', '" . $message . "')");
}

Le problème est au niveau de cette ligne:

Code PHP :
<?php 
$message
= nl2br(stripslashes($message)); // Pour le message, comme on utilise un textarea, il faut remplacer les Entrées par des <br />

J'ai un nl2br pour que les enters que le visiteurs utilisera soit interpreté comme retour à la ligne pour obtemir ceci par exemple:

"Bonjour,

Il est bien ce jeu ^^"

Et même avec le nl2br quan je fais un test avec retour à la ligne j'ai ça par exemple:

"Bonjour,rnIl est bien ce jeu ^^"

1° Il n'y a pas de retour à la ligne
2° Il y a l'apparition de "rn"

Pouvez-vous m'aider svp pcq je trouve pas solution et ça commence à m'enervé?

Merci
Dark Angels


RE: Pb retour à la ligne - Roworll - 21-12-2007

Tiré de la doc PHP
Citation :mysql_real_escape_string() appelle la fonction mysql_escape_string() de la bibliothèque MySQL qui ajoute un slash aux caractères suivants : NULL, \x00, \n, \r, \, ', " et \x1a.

\r et\n sont caractères qui font ton retour chariot.
Lorsque tu appelles nl2br, il ne reste plus rien à transformer mysql_real_escape_string a déjà changé ces caractères.

Tu dois faire appel à nl2br avant mysql_real_escape_string,


RE: Pb retour à la ligne - Reaven - 21-12-2007

Slt,

Que veux-tu dire par mettre avant le mysql_real_escape_string?
Tu veux faire ça:

Code PHP :
<?php 
$message
= nl2br(mysql_real_escape_string(htmlspecialchars($message));)

ou encore ça:

Code PHP :
<?php 
$message
= nl2br ($_POST['message']);
$message= mysql_real_escape_string(htmlspecialchars($message));

Pour les 2 cas ça ne marche pas.
Peux-tu mieu expliquer stp?

Merci
Dark Angels


RE: Pb retour à la ligne - Lys91 - 21-12-2007

$text = str_replace("\n", '<br />', $text);

Voilà ça marche aussi :p


RE: Pb retour à la ligne - Reaven - 21-12-2007

toujours le même problème.

voici ma ligne après modification:

Code PHP :
<?php 
$message
= mysql_real_escape_string(htmlspecialchars($message)); // De même pour le message
$message= stripslashes(str_replace("\n",'<br/>', $message));

et voici ce que ça affiche:

Citation :a<br />rnbc<br />rnd

Pouvez-vous me dire où je doit placer le morceau de code qui corrigera cette erreur svp?

Merci
Dark Angels


RE: Pb retour à la ligne - X-ZoD - 21-12-2007

dans ton sql le champ qui recoit le message doit etre de type TEXT

ensuite tu utilise nl2br() seulement kan tu recupere le texte et laffiche sur la page web

voici comment je fait et ca marche nikel

mettre dans le sql
Code PHP :
<?php 
$db
->query("insert into forum_posts (titre, post, date, id_auteur, id_sujet) values ('".htmlentities($_POST['titre'])."', '".htmlentities($_POST['post'])."', now(), ".$_SESSION['id']['user'].", '".$_POST['id_sujet']."')");

et je recupere normalement sauf ke a lafichage japelle nl2br()

je ne comprend vraiment pas pourquoi vous faite ca mysql_real_escape_string(htmlspecialchars($message))


RE: Pb retour à la ligne - Ogham - 22-12-2007

Bonsoir,

Il me semblais avoir compris que la fonction mysql_real_escape_string devait être utilisée lorsqu'on veut récupérer des infos dans la bdd (exemple login password dans une procédure de connexion) et ce pour éviter les injections SQL.

Et htmlentities pour éviter d'enregistrer du code dans la BDD à l'insertion de données.
code qui pourrait être interprété par la suite.

Ce sont donc deux failles différentes qui se traitent différemment.

Est-ce bien cela ou ai je tout interprété de travers ?
Dans tous les cas pour le moment j'utilise la méthode d'X-ZoD.

Bonne soirée.


RE: [réglé]Pb retour à la ligne - Reaven - 22-12-2007

ok merci


RE: [réglé]Pb retour à la ligne - X-ZoD - 22-12-2007

en ce qui concerne les failles je ne peux pas en dire plsu pour le moment .. heureux d'avoir pu aider