Messages Personnels sur mon site

Résolu/Fermé
Wolfylink Messages postés 192 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 14 novembre 2010 - 9 juil. 2009 à 12:46
Wolfylink Messages postés 192 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 14 novembre 2010 - 9 juil. 2009 à 18:13
Bonjour,
J'ai un problème pas trop important sur mon site mais ça me titille, alors voilà :
Je fais un système de MP (messages personnels) sur mon site; j'ai mis :

--CODE PHP--message.php--

<p><form method="post" action="envoi.php">
POUR :<input type="text" name="autre" /><br/>
OBJET :<input type="text" name="titre" /><br/>
<textarea name="message" rows="8"></textarea><br/>
<input type="submit" value="Envoyer"/>
</form></p></ital>

----
Ceci est le formulaire d'envoi... Voici maintenant la page d'envoi...

--CODE PHP--envoi.php--

<?php
if (isset($_POST['autre']))
{
if (isset($_POST['message']))
{
if (isset($_POST['titre']))
{
mysql_connect("localhost", "monsite", "xxx");
mysql_select_db("monsite");

$_POST['autre'] = nl2br($_POST['autre']);
$_POST['message'] = nl2br($_POST['message']);
$_POST['titre'] = nl2br($_POST['titre']);
$pseudo = $_SESSION['pseudo'];
$autre = mysql_real_escape_string (htmlspecialchars ($_POST['autre']));
$message = mysql_real_escape_string (htmlspecialchars ($_POST['message']));
$titre = mysql_real_escape_string (htmlspecialchars ($_POST['titre']));
mysql_query("INSERT INTO mp VALUES('', '$titre', '$pseudo', '$message', '$autre')");
mysql_close();
?>
<p>Le message a bien été envoyé...<br/>
<a href="reception.php">Cliquez ici pour revenir à votre boite de réception</a>.</p><?php
}
}
}
?>


----

Le problème est ici...

->$_POST['message'] = nl2br($_POST['message']);
->$autre = mysql_real_escape_string (htmlspecialchars ($_POST['autre']));

La fonction nl2br remplace les entrées par des <br/>.
La fonction htmlspecialchars bloque les balises html...

Ce qui donne dans la boite de réception :

"Salut !<br/>Comment vas-tu ?"

Pour un message envoyé :

"Salut !
Comment vas-tu ?"


Comment bloquer les balises ET reconnaître les entrées ?
Aidez-moi, s'il vous plaît !!!
@ +
A voir également:

11 réponses

Utilisateur anonyme
9 juil. 2009 à 14:58
juste une question : c est pas <br> et non <br/> normalement ?? Oo
0
Wolfylink Messages postés 192 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 14 novembre 2010 25
9 juil. 2009 à 15:45
Non, non...
C'est bien <br/> !!!
0
Utilisateur anonyme
9 juil. 2009 à 15:47
ok merci :D. mais je peux pas t aider, je ne pense pas etre assez calé en php pour ca :)
0
Wolfylink Messages postés 192 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 14 novembre 2010 25
9 juil. 2009 à 16:39
Dommage... Je vais devoir enlever un des deux...
Je vais sans doute enlever la fonction nl2br...
Si j'enlève la fonction htmlspecialchars, la sécurité de mon site n'est plus...

Pfff... Que faire... ?

D'ailleurs, quand j'y pense...
Vous avez sous vos yeux un parfait exemple !!!
Regardez mon message !
si je mets une balise (exemple : <h1>BALISE</h1>) elle n'est pas prise en compte...
Mais quand je fais entrée



Ca marche ! Ca alors !
0

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

Posez votre question
Bonjour

Il suffit de n'appeler nl2br qu'APRÈS htmlspecialchars et non pas avant, par exemple
$message = mysql_real_escape_string (nl2br(htmlspecialchars ($_POST['message'])));

(écrit comme ça, nl2br est bien appelé après htmlspecialchars, j'espère que tu es d'accord)


D'ailleurs, en bonne logique, tu devrais devrais enregistrer tes données dans ta base en les ayant simplement échappées avec mysql_real_escape_string. Tu ne devrais utiliser nl2br(htmlspecialchars ( que pour l'affichage mais c'est un autre débat.
0
Utilisateur anonyme
9 juil. 2009 à 17:14
ahhhhhhhhhhhh mais peut etre que si tu mets un simple \n a la place du br ca passera !!!! test pour voir, que je m enflamme pas pour rien xd
0
Non, un \n en HTML ne provoque pas de passage à la ligne
0
Utilisateur anonyme > le père
9 juil. 2009 à 17:29
oui mais il utilise le php, si il donne un \n en php il sera interprété en html pour un saut de ligne non?
0
Wolfylink Messages postés 192 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 14 novembre 2010 25
9 juil. 2009 à 17:34
Si je me souviens bien, le "\n" provoque un retour à la ligne en C...
En tout cas, merci (de nouveau) le père, ça marche maintenant !!!
0
Utilisateur anonyme
9 juil. 2009 à 17:36
oui c est ca, \n est en c , mais je croyait l'avoir utilisé en cours en c pour un générateur php ... mais bon x)


bah bien joué le père , et merci pour cette info :D
0
Wolfylink Messages postés 192 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 14 novembre 2010 25
9 juil. 2009 à 17:43
Bon... Euh... Tant que j'y suis...
Comment faire pour enlever les \ avant les ", \, ou autres ' ???
0
Wolfylink Messages postés 192 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 14 novembre 2010 25
9 juil. 2009 à 17:49
Et pour répondre à nagashima, de toute façon, ça aurait fais pareil; car htmlspecialchars bloque TOUTES les entrées HTML... Dans le cas ou \n aurait bien été un retour à la ligne, ça aurait mis :

"Bonjour !\nComment ça va !"

Et puis, <br/> marche, donc pourquoi se casser la tête ? xD
0
Utilisateur anonyme
9 juil. 2009 à 17:52
ouioui, mais c'était juste une idée comme ca x) des fois on fait un truc qui est sensé faire exctement la meme chose mais ca marche -_-'

perso j'aime pas ces solutions car tu comprends pas trop mais bon ^^
0
Wolfylink Messages postés 192 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 14 novembre 2010 25
9 juil. 2009 à 17:56
Quelles solutions ?
Celles que vient de donner le père ?
Si c'est le cas, j'ai très bien compris, au point de me demander pourquoi je ne l'ai pas fait avant =/
0
Utilisateur anonyme
9 juil. 2009 à 17:58
non je parlais des solutions en générale :)

celle de le pere son nikel, on comprend trés bien ^^
0
Wolfylink Messages postés 192 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 14 novembre 2010 25
9 juil. 2009 à 18:13
Donc je disais...
Comment faire pour enlever les \ devant les ", ' ou autres \ ???
0