Messages Personnels sur mon site
Résolu
Wolfylink
Messages postés
192
Date d'inscription
Statut
Membre
Dernière intervention
-
Wolfylink Messages postés 192 Date d'inscription Statut Membre Dernière intervention -
Wolfylink Messages postés 192 Date d'inscription Statut Membre Dernière intervention -
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 !!!
@ +
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:
- Messages Personnels sur mon site
- Site comme coco - Accueil - Réseaux sociaux
- Site de telechargement - Accueil - Outils
- Quel site remplace coco - Accueil - Réseaux sociaux
- Comment savoir si quelqu'un lit mes messages sur whatsapp - Accueil - Messagerie instantanée
- Comment récupérer les messages supprimés sur whatsapp - Guide
11 réponses
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 !
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 !
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.
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.
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
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 !!!
En tout cas, merci (de nouveau) le père, ça marche maintenant !!!
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
"Bonjour !\nComment ça va !"
Et puis, <br/> marche, donc pourquoi se casser la tête ? xD