Salut tout le monde !
J'utilise la fonction nl2br() pour pouvoir rajouter des <br/> automatiquement quand on appuie sur la touche entré lorsqu'on poste une news. Mais le problème c'est que ca m'affiche "rn" au lieu de mettre des retours à la ligne..
Donc quand je tape :
"f
(ici c'est un entré)
f" ca va m'afficher : "frnf".
Je ne comprend pas le problème, voici ma page creer.php et news.php :
Creer.php :
<?php
require "../config.php";
mysql_connect(DB_HOST, DB_LOGIN, DB_PASS);
mysql_select_db(DB_BDD);
mysql_query('SET NAMES "UTF8"');
extract($_POST);
if(isset($_POST'titre']) && isset($_POST'pseudo']) && isset($_POST'contenu'])){
if(!empty($_POST'titre']) && !empty($_POST'pseudo']) && !empty($_POST'contenu'])){
$pseudo = mysql_real_escape_string($_POST'pseudo']);
$titre = mysql_real_escape_string($_POST'titre']);
$contenu = mysql_real_escape_string($_POST'contenu']);
$contenu = nl2br($contenu);
$contenu = htmlspecialchars($contenu);
$contenu = stripslashes($contenu);
$sql = "INSERT INTO news (titre,contenu, pseudo) VALUES ('$titre', '$contenu', '$pseudo')";
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
header("Location: index.php");
}else{
header('Refresh: 2;url=index.php');
echo "Au moins un champs est vide";
}
}?>
Et la page news.php :
<?php
mysql_query('SET NAMES "UTF8"');
$sql="SELECT * FROM news ORDER BY id DESC";
$req= mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
while($data=mysql_fetch_assoc($req)){
$contenu = $data'contenu'];
$contenu = preg_replace('#\<strong>(.+)\</strong>#isU', '<b>$1</b>', $contenu); // Regex pour remplacer en <b>
echo "<div id=\"haut_contenu\" style=\"margin-top: 15px;\">".htmlspecialchars($data"titre"])."</div>";
echo "<div id=\"content_contenu\">".$contenu."<br/>";
echo "<span align=\"left\">Publié le ".date("j/n/Y G:i",strtotime($data"date"]))." par ".htmlspecialchars($data"pseudo"])."</span><br/><br/><br/>";
$sql2="SELECT id FROM comment WHERE news_id={$data"id"]}";
$req2= mysql_query($sql2) or die('Erreur SQL !<br />'.$sql2.'<br />'.mysql_error());
echo "Il y a <a href=\"voir_com.php?id={$data'id']}\" onclick=\"window.open(this.href); return false;\">" .mysql_num_rows($req2)." commentaires</a> <br/>";
echo '</div>';
echo "<div id=\"bas_contenu\"></div>";
}
?>
Si vous avez une idée, je suis preneur :D
Salut,
C'est normal, vous utilisez la fonction "mysql_espace_string" qui fait un traitement particulier.
Vous "sécurisez" $_POST'contenu'], convertissez les sauts de lignes avec nl2br pour ensuite les convertir en leur entité (?) et effacez tout les SLASH à la fin du traitement, il y a un problème en effet… :)
Vous devriez plutôt faire le contraire (sans stripslashes) !
$contenu = htmlspecialchars($_POST'contenu']);
$contenu = nl2br($contenu);
$contenu = mysql_escape_string($contenu);