01net    Web


Actuellement en ligne : 1582 Utilisateurs dont 89 dans Programmation et développement >S'inscrire      >S'identifier      >Recherche      >Aide  
modéré par A.Ouloube, smilblick, Nico5779, Zplay, Beno@  
01net > Forum de 01net > Programmation et développement > PHP
> Passage à la ligne dans le livre d'or
Auteur
Message
 
<     1       >
mscorpion
  
  :-)
      ?   @     Posté le 08/05/2008 08:17:58  
Voter pour ce message
Bonjour,
Je viens de remarquer que lorsqu'un visiteur écrit un message dans mon livre d'or, et qu'il fait "enter" pour passer à la ligne, le passage à la ligne ne se fait pas et à chaqu'un de ces endroits, s'affiche ces deux lettres " rn "!
Comment puis-je faire pour que le passage à la ligne se fasse et que "rn" ne s'écrive plus?
Merci de votre attention.

MScorpion
-->Message édité par mscorpion le 08/05/2008 08:18:42<--
-------
MScorpion
Beno@
  
  :-)
      ?   @     Posté le 08/05/2008 11:06:37  
Voter pour ce message
ce ne serait pas du à la fonction stripslashes?
sinon moi j'utilise nl2br

par exemple echo nl2br(htmlentities($texte))
mscorpion
  
  :-)
      ?   @     Posté le 08/05/2008 23:25:39  
Voter pour ce message
Beno@ a écrit :
ce ne serait pas du à la fonction stripslashes?
sinon moi j'utilise nl2br

par exemple echo nl2br(htmlentities($texte))


Bonjour,
stripslashes enlève les slashes devant les ' et nl2br transforme les "entrées" que le visiteur a entré en HTML.Et dans mon code j'ai les deux comme ceci :

$votremail=$_POST["votremail"];
$from=htmlspecialchars("From: ".$votremail);
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
$pseudo = stripslashes($pseudo);
$message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
$message = nl2br($message);
$message = strip_tags($message);
$message = stripslashes($message);
$destinataire='xxx@xxx.com';
$objet=$_POST['objet'];


C'est justement parceque j'ai mis nl2br que je ne comprends pas!!
Pourriez-vous m'aider?
Merci.
-->Message édité par mscorpion le 08/05/2008 23:32:25<--
-------
MScorpion
Beno@
  
  :-)
      ?   @     Posté le 09/05/2008 10:08:37  
Voter pour ce message
parce que /rn est en fait un retour chariot ;)

par contre, l2br vas donner un code html et vous utilisez ensuite strip_tags :/ ton ca ne marche pas
mscorpion
  
  :-)
      ?   @     Posté le 09/05/2008 15:49:40  
Voter pour ce message
Beno@ a écrit :
parce que /rn est en fait un retour chariot ;)

par contre, l2br vas donner un code html et vous utilisez ensuite strip_tags :/ ton ca ne marche pas


Bonjour,
J'avais mis strip_tags pour éviter que certains écrivent du HTML, comme il me l'a été conseillé!
A votre avis, que serait-il intéressant pour moi d'enlever ou d'ajouter et pourquoi?
Je vous remercie de votre attention.
-------
MScorpion
Pc_expert_3
  
   
      ?   @     Posté le 09/05/2008 16:18:09  
Voter pour ce message
htmlentities() remplace les <>& etc par leur équivalents HTML &lt;&gt; &amp; etc, ce qui empêche un code HTML d'être interpété par le navigateur. Ça résoud le problème du strip_tags qui devient donc inutile.

La fonction nl2br() remplace les retours à la ligne \n par des balises HTML <br>. Pas les \rn que je sache.
Sinon, un simple $texte = str_replace('\rn', '<br />', $texte); règlerait simplement l'affaire.
mscorpion
  
  :-)
      ?   @     Posté le 10/05/2008 22:03:08  
Voter pour ce message
Pc_expert_3 a écrit :
htmlentities() remplace les <>& etc par leur équivalents HTML <> & etc, ce qui empêche un code HTML d'être interpété par le navigateur. Ça résoud le problème du strip_tags qui devient donc inutile.

La fonction nl2br() remplace les retours à la ligne \n par des balises HTML <br>. Pas les \rn que je sache.
Sinon, un simple $texte = str_replace('\rn', '<br />', $texte); règlerait simplement l'affaire.


Bonjour,
J'ai essayé en ajoutant :
$texte = str_replace('\rn', '<br />', $texte);

Et ensuite en ajoutant :
$texte = str_replace('\rn', '<br />', $texte);

et en enlevant :
$message = strip_tags($message);

Et les "rn" s'inscrivent toujours et ça ne passe toujours pas à la ligne!!
Pourriez-vous m'aider, y aurait-il autre chose qui pourrait provoquer cela?

merci
-------
MScorpion
Beno@
  
  :-)
      ?   @     Posté le 11/05/2008 11:18:28  
Voter pour ce message
$message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
$message = nl2br($message);
$message = strip_tags($message);
$message = stripslashes($message);

ca c'est assez bizare comme code: parce que deja tu enleve les charactères dangereux pour mysql (alors que tu n'enregistre pas en base de donnée) mais bon, ca peut être utile. tu enlève les caractère html (donc les balises et tout)
ensuite tu met des <br/>
ensuite tu enlève à nouveau les balises (donc ca doit géner nl2br)
et tu enlève les slashes.
c'est un peu lourd et tordu.

il faudrait voir comment sont enregistrés les messages dans la base de donnée pour savoir comment les retraiter ;)
mscorpion
  
  :-)
      ?   @     Posté le 11/05/2008 17:54:54  
Voter pour ce message
Beno@ a écrit :
$message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
$message = nl2br($message);
$message = strip_tags($message);
$message = stripslashes($message);

ca c'est assez bizare comme code: parce que deja tu enleve les charactères dangereux pour mysql (alors que tu n'enregistre pas en base de donnée) mais bon, ca peut être utile. tu enlève les caractère html (donc les balises et tout)
ensuite tu met des <br/>
ensuite tu enlève à nouveau les balises (donc ca doit géner nl2br)
et tu enlève les slashes.
c'est un peu lourd et tordu.

il faudrait voir comment sont enregistrés les messages dans la base de donnée pour savoir comment les retraiter ;)



Bonjour,

Je débute et lorsque vous voulez voir comment sont enregistrés les messages, est-ce cela que vous voulez :
mysql_query("INSERT INTO livreor VALUES('', '" . $votremail . "', '" . $pseudo . "', '" . $message . "')");

ou la façon dont j'ai créer ma base de données?
Merci pour toute votre attention.
-------
MScorpion
Beno@
  
  :-)
      ?   @     Posté le 11/05/2008 19:00:28  
Voter pour ce message
est-ce que vous utilisez une fonction qui transforme le message avant de sauvegarder?
mscorpion
  
  :-)
      ?   @     Posté le 11/05/2008 22:00:30  
Voter pour ce message
Beno@ a écrit :
est-ce que vous utilisez une fonction qui transforme le message avant de sauvegarder?

Bonjour,
Je n'ai pas appris à transformer un message ni en quoi le transformer, juste la sécurité avec mysql_real_escape_string et htmlspecialchars ainsi que nl2br pour remplacer les entrées par <br />
Les quelques choses que j'ai ajoutées par rapport à ce que j'ai appris sont :
stripslashes et strip_tags et j'ai aussi ajouté les codes pour les smileys et pour mettre en gras, italique et souligné.
-------
MScorpion
Beno@
  
  :-)
      ?   @     Posté le 11/05/2008 23:01:26  
Voter pour ce message
vous utilisez nl2br avant de sauvegarder le message?
mscorpion
  
  :-)
      ?   @     Posté le 11/05/2008 23:19:54  
Voter pour ce message
Beno@ a écrit :
vous utilisez nl2br avant de sauvegarder le message?

Bonjour,
Oui, je mets le tout de suite après la connection à ma base de données et donc avant de vérifier si une adresse est entrée, un pseudo, ... et d'enregistrer le message.
-------
MScorpion
Pc_expert_3
  
   
      ?   @     Posté le 12/05/2008 03:58:06  
Voter pour ce message
Je ne comprends pas l'intérêt de faire d'affilée mysql_real_escape_string et stripslashes, sachant que le premier va ajouter les backslashes que l'autre va enlever O_o
De plus, la fonction nl2br remplace les \n et \r en <br>, pas les \rn
En fait, on dirait que les deux sont combinés d'affilée O_o²
Beno@
  
  :-)
      ?   @     Posté le 12/05/2008 09:07:34  
Voter pour ce message
en fait je crois qu'il faut simplifier la transformation.

je mettrais mysql_real_escape_string($message) avant d'enregistrer le message

et juste stripslashes(nl2br(htmlentities($message))) pour l'afficher
-->Message édité par Beno@ le 12/05/2008 09:10:30<--
mscorpion
  
  :-)
      ?   @     Posté le 12/05/2008 13:46:31  
Voter pour ce message
Beno@ a écrit :
en fait je crois qu'il faut simplifier la transformation.

je mettrais mysql_real_escape_string($message) avant d'enregistrer le message

et juste stripslashes(nl2br(htmlentities($message))) pour l'afficher


Bonjour,
Lorsque je mets le premier avant d'enregistrer le message et le deuxième juste avant de l'afficher, je n'ai plus de "rn" mais j'ai les slashes.
Et lorsque j'enlève le "stripslashes" pour le mettre avant d'enregistrer, je n'ai plus de slashes mais j'ai de nouveau les "rn".
Et dans les deux cas, le passage à la ligne ne se fait pas.
Je ne comprends pas!
-------
MScorpion
Beno@
  
  :-)
      ?   @     Posté le 12/05/2008 14:36:46  
Voter pour ce message
alors la j'ai jamais eu ce coup :/

peut on avoir l'adresse ou un code de test?
Martius
  est bon : Mangez en !
  :-)
      ?   ^   @     Posté le 12/05/2008 14:37:46  
Voter pour ce message

$votremail=$_POST["votremail"];
$from=htmlspecialchars("From: ".$votremail);
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
$pseudo = stripslashes($pseudo);
$message = nl2br(htmlspecialchars($_POST['message']));
$message = strip_tags($message); // En trop
$destinataire='xxx@xxx.com';
$objet=$_POST['objet'];


Il faut mettre mysql_real_escape_string au dernier moment (directement au niveau de la requête), sinon, théoriquement pas besoin de stripslashes avec mysql_real_escape_string(), puisque c'est en parti géré au niveau du php.ini avec les magicquotes_runtime, etc.
mscorpion
  
  :-)
      ?   @     Posté le 12/05/2008 18:20:27  
Voter pour ce message
Martius a écrit :



Il faut mettre mysql_real_escape_string au dernier moment (directement au niveau de la requête), sinon, théoriquement pas besoin de stripslashes avec mysql_real_escape_string(), puisque c'est en parti géré au niveau du php.ini avec les magicquotes_runtime, etc.


Bonjour,
Alors voilà tout le code et en ayant placé tout comme ici (en rouge):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title>Livre d'or</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="css/livreor.css" />
<script language="Javascript">

<!--js pour livre d'or-->
function bbcode(bbdebut, bbfin)
{
var input = window.document.formulaire.message;
input.focus();
/* pour IE (toujous un cas appar lui ;) )*/
if(typeof document.selection != 'undefined')
{
var range = document.selection.createRange();
var insText = range.text;
range.text = bbdebut + insText + bbfin;
range = document.selection.createRange();
if (insText.length == 0)
{
range.move('character', -bbfin.length);
}
else
{
range.moveStart('character', bbdebut.length + insText.length + bbfin.length);
}
range.select();
}
/* pour les navigateurs plus récents que IE comme Firefox... */
else if(typeof input.selectionStart != 'undefined')
{
var start = input.selectionStart;
var end = input.selectionEnd;
var insText = input.value.substring(start, end);
input.value = input.value.substr(0, start) + bbdebut + insText + bbfin + input.value.substr(end);
var pos;
if (insText.length == 0)
{
pos = start + bbdebut.length;
}
else
{
pos = start + bbdebut.length + insText.length + bbfin.length;
}
input.selectionStart = pos;
input.selectionEnd = pos;
}
/* pour les autres navigateurs comme Netscape... */
else
{
var pos;
var re = new RegExp('^[0-9]{0,3}$');
while(!re.test(pos))
{
pos = prompt("insertion (0.." + input.value.length + "):", "0");
}
if(pos > input.value.length)
{
pos = input.value.length;
}
var insText = prompt("Veuillez taper le texte");
input.value = input.value.substr(0, pos) + bbdebut + insText + bbfin + input.value.substr(pos);
}
}
function smilies(img)
{
window.document.formulaire.message.value += '' + img + '';
}
</script>
<!--fin js pour livre d'or-->

</head>
<body>

<form method="post" action="livreor.php" name="formulaire">



<h1>
<img src="http:.gif" alt="Etoile tourne" />
<img src="http:.gif" alt="Livre d'or" />
<img src="http:.gif" alt="Etoile tourne" />
</h1>

<div id="corps">
<h2>
Votre Email :<input type="text" name="votremail" /><br />
<input type="hidden" name="objet" value="Vous avez un nouveau message" />
Pseudo : <input name="pseudo" /><br />
Message :<br />
<textarea name="message" rows="8" cols="35">
<input type="hidden" name="objet" value="Vous avez un nouveau message dans votre livre d'or" />

<!--première partie smileys-->
<input type="button" id="gras" name="gras" value="Gras" onClick="javascript:bbcode('', '');return(false)" />
<input type="button" id="italic" name="italic" value="Italic" onClick="javascript:bbcode('', '');return(false)" />
<input type="button" id="souligné" name="souligné" value="Souligné" onClick="javascript:bbcode('', '');return(false)" />
<br />
<img src="gif" title="gros_sourire" alt="gros_sourire" onClick="javascript:smilies(':lol:');return(false)" />
<img src="gif" title="triste" alt="triste" onClick="javascript:smilies(':triste:');return(false)" />
<img src="gif" title="tire_la_langue" alt="tire_la_langue" onClick="javascript:smilies(':langue:');return(false)" />
<img src="gif" title="visage_rouge" alt="visage_rouge" onClick="javascript:smilies(':rouge:');return(false)" />
<img src="gif" title="fantome" alt="fantome" onClick="javascript:smilies(':fantome:');return(false)" />
<img src="gif" title="pleure" alt="pleure" onClick="javascript:smilies(':pleure:');return(false)" />
<img src="gif" title="cool" alt="cool" onClick="javascript:smilies(':cool:');return(false)" />
<img src="gif" title="etonne" alt="etonne" onClick="javascript:smilies(':etonne:');return(false)" />
<img src="gif" title="sourire" alt="sourire" onClick="javascript:smilies(':sourire:');return(false)" />
<img src="gif" title="mauvais" alt="mauvais" onClick="javascript:smilies(':mauvais:');return(false)" />
<img src="gif" title="content" alt="content" onClick="javascript:smilies(':content:');return(false)" />
<img src="gif" title="clin_d_oeil" alt="clin_d_oeil" onClick="javascript:smilies(':cligne:');return(false)" />
<img src="gif" title="grands_yeux" alt="grands_yeux" onClick="javascript:smilies(':yeux:');return(false)" />
<img src="gif" title="comprend_pas" alt="comprend_pas" onClick="javascript:smilies(':hein:');return(false)" />
<img src="gif" title="diabolique" alt="diabolique" onClick="javascript:smilies(':diable:');return(false)" />
<img src="gif" title="respect1" alt="respect1" onClick="javascript:smilies(':respect:');return(false)" />
<img src="gif" title="applaudissement" alt="applaudissement" onClick="javascript:smilies(':respect:');return(false)" />
<!--fin première partie smileys-->
<br />
<input type="submit" value="Envoyer" />
</h2>
</form>

<p class="pages">

<?php
mysql_connect("", "", "");
mysql_select_db("");


$votremail=$_POST["votremail"];
$from=htmlspecialchars("From: ".$votremail);
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
$pseudo = stripslashes($pseudo);
$message = nl2br(htmlspecialchars($_POST['message']));
$destinataire='xxx@xxx.com';
$objet=$_POST['objet'];


if(trim($votremail)=="")
{
echo "Vous n'avez pas entré d'adresse!<br/>";
}

elseif (trim($pseudo)=="")
{
echo "Vous n'avez pas entré de pseudo!<br/>";
}

elseif (trim($message)=="")
{
echo "Vous n'avez pas entré de message!<br/>";
}

else
{
//Mise en forme du texte +smileys
//gras
$message = preg_replace('`\[g\](.+)\[/g\]`isU', '<strong>$1</strong>', $message);
//italic
$message = preg_replace('`\[i\](.+)\[/i\]`isU', '<em>$1</em>', $message);
//souligné
$message = preg_replace('`\[s\](.+)\[/s\]`isU', '<u>$1</u>', $message);

//Les Smileys

$message = str_replace(':lol:', '<img src="gif" title="gros_sourire" alt="gros_sourire">', $message);
$message = str_replace(':triste:', '<img src="gif" title="triste" alt="triste">', $message);
$message = str_replace(':langue:', '<img src="gif" title="tire_la_langue" alt="tire_la_langue">', $message);
$message = str_replace(':rouge:', '<img src="gif" title="visage_rouge" alt="visage_rouge">', $message);
$message = str_replace(':fantome:', '<img src="gif" title="fantome" alt="fantome">', $message);
$message = str_replace(':pleure:', '<img src="gif" title="pleure" alt="pleure">', $message);
$message = str_replace(':cool:', '<img src="gif" title="cool" alt="cool">', $message);
$message = str_replace(':etonne:', '<img src="gif" title="etonne" alt="etonne">', $message);
$message = str_replace(':sourire:', '<img src="gif" title="sourire" alt="sourire">', $message);
$message = str_replace(':mauvais:', '<img src="gif" title="mauvais" alt="mauvais">', $message);
$message = str_replace(':content:', '<img src="gif" title="content" alt="content">', $message);
$message = str_replace(':cligne:', '<img src="gif" title="clin_d_oeil" alt="clin_d_oeil">', $message);
$message = str_replace(':yeux:', '<img src="gif" title="grands_yeux" alt="grands_yeux">', $message);
$message = str_replace(':hein:', '<img src="gif" title="comprend_pas" alt="comprend_pas">', $message);
$message = str_replace(':diable:', '<img src="gif" title="diabolique" alt="diabolique">', $message);
$message = str_replace(':respect:', '<img src="gif" title="respect1" alt="respect1">', $message);
$message = str_replace(':applaudissement:', '<img src="gif" title="applaudissement" alt="respect1">', $message);
//fin de mise en forme du texte +smileys

$message = mysql_real_escape_string($message);


mysql_query("INSERT INTO livreor VALUES('', '" . $votremail . "', '" . $pseudo . "', '" . $message . "')");
mail($destinataire,$objet,$message,$from);
echo "Merci de m'avoir laissé un message<br/>";
}


$nombreDeMessagesParPage = 20;
$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livreor');
$donnees = mysql_fetch_array($retour);$totalDesMessages = $donnees['nb_messages'];
$nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
echo 'Page : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
echo '<a href="livreor.php?page=' . $i . '">' . $i . '</a> ';
}
?>

</p>
</div>



<?php
error_reporting(E_ALL);


if (isset($_GET['page']))
{
$page = $_GET['page'];
}
else
{
$page = 1;
}

$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;

$reponse = mysql_query('SELECT * FROM livreor ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);


while ($donnees = mysql_fetch_array($reponse))
{
echo '<h4><font color="#f05050" size="5">' . $donnees['pseudo'] . '</font> a écrit :<br />' . $donnees['message'] . '</h4>';
}


mysql_close();

?>



<br/><br/>

<p><?php include(''); ?></p>

<br/><br/>

<h3><a href="menu"><img src="gif" alt="Retour"/></a></h3>
</body>
</html>

Alors, le passage à la ligne se fait bien, il n'y a plus de "rn" mais il y a les slashes.
Et il me dit que j'ai une erreur à cette ligne :
mail($destinataire,$objet,$message,$from);

alors, qu'il n'y en avait pas avant!!
-->Message édité par mscorpion le 12/05/2008 18:34:32<--
Martius
  est bon : Mangez en !
  :-)
      ?   ^   @     Posté le 13/05/2008 10:11:56  
Voter pour ce message
essaye en mettant

set_magicquotes_runtime(0);

au début du code.
mscorpion
  
  :-)
      ?   @     Posté le 13/05/2008 12:13:52  
Voter pour ce message
Martius a écrit :
essaye en mettant

set_magicquotes_runtime(0);

au début du code.

Bonjour,
J'ai mis la ligne tel quel juste après ma connection bd et avant
$votremail=$_POST["votremail"];

et du coup, il n'affiche plus les messages qui étaient déjà là et me dit que j'ai une erreur à la ligne que j'ai ajoutée! :S
Martius
  est bon : Mangez en !
  :-)
      ?   ^   @     Posté le 15/05/2008 16:18:34  
Voter pour ce message
manquait un underscore.
set_magic_quotes_runtime(0);
<     1       >

01net > Forum de 01net > Programmation et développement > PHP
> Passage à la ligne dans le livre d'or

Aller à :

Page générée en : 0.238s - X2board 2.2

Nous contacter | Charte de confiance | Voir notice légale

Tous droits réservés © 1999 - 2008 Groupe Tests - 01net.


Sites du réseau 01net Network : 01net - 01men - Rmc.fr - Bfmtv.fr - Radiobfm.com - TousLesPodcasts - Micro Achat - Caractere.net -
Electronique.biz - Mesures.com - Transaction.fr

Jeux
Explorez les 4 coins de San Francisco en vous éclatant sur plusieurs mini-jeux! Jouez!
Auto
Cote : envie de revendre votre auto? Calculez gratuitement la valeur de votre voiture !