Caractères
Bonsoir,
je voudrais éclaircir un petit problème que j'ai avec un livre d'or que j'ai fait sur un site.
lorsque le visiteur poste un méssage ,au lieu d'avoir par exemple:
je n'ai
il y a:
je n\'ai
d'où celà peut il venir? pourquoi ce signe \ en plus?
merci
je voudrais éclaircir un petit problème que j'ai avec un livre d'or que j'ai fait sur un site.
lorsque le visiteur poste un méssage ,au lieu d'avoir par exemple:
je n'ai
il y a:
je n\'ai
d'où celà peut il venir? pourquoi ce signe \ en plus?
merci
Configuration: Windows XP Firefox 2.0.0.9
5 réponses
-
Bonsoir,
c'est un \ qui est rajouté automatiquement pour protéger les ' (car ce ' est aussi utilisé pour délimiter une chaine alors ça créerait une erreur)
pour l'enlever passes par la fonction stripslashes() avant d'afficher.
@lain-
Bonjour,
je t'avoue que je ne te suis pas voilà mon script que dois je rajouter?
merci
<?php
mysql_connect("", "", "i");
mysql_select_db("livredor");
if (isset($_POST['pseudo']) AND isset($_POST['message']))
{
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
$message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
$message = nl2br($message);
mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $message . "')");
}
$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>
<?php
-
-
Bonjour,
Il doit manquer un bout de code, car je vois l'affichage de la pagination des messages, mais pas l'affichage du message lui même.-
re
oui tu as raison,voilà le code complet: que dois je faire?
<?php
mysql_connect("", "", "");
mysql_select_db("livreor");
if (isset($_POST['pseudo']) AND isset($_POST['message']))
{
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
$message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
$message = nl2br($message);
mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $message . "')");
}
$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>
<?php
if (isset($_GET['page']))
{
$page =intval( $_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 '<p><strong>' . $donnees['pseudo'] . '</strong> :<br />' . $donnees['message'] . '</p>';
}
mysql_close();
?>
-
-
Bonjour,
while ($donnees = mysql_fetch_array($reponse)) { echo '<p><strong>' . $donnees['pseudo'] . '</strong> :<br />' .stripslashes( $donnees['message'] ). '</p>'; }
je ne pense pas qu'il y ait d' apostrophe dans le pseudo, sinon tu fais pareil pour $donnees['pseudo']
@lain-
re
sur un tuto du site du zero,ils disent ceçi:
Vous allez comprendre, voici un code qui annule l'effet des magic quotes :
Code : PHP
if(get_magic_quotes_gpc()) {
$_POST = array_map('stripslashes', $_POST);
$_GET = array_map('stripslashes', $_GET);
$_COOKIE = array_map('stripslashes', $_COOKIE);
}
Ce code permet donc de contrer l'effet des magic quotes. Les magic quotes agissent avant l'analyse du code, ce petit code est donc à placer au tout début de votre page.
ce n'est pas le même que le tien,il se place en début de scipt:qu'en penses tu?
a+
-
-
Bonjour,
Comme je t'ai dit plus haut les \ pour les ' sont indispensables pour éviter par exemple que ta requette qui contient des ' en début et fin de chaine ne soit perturbée par les apostrophes contenues dans les variables.
'SELECT * FROM livreor ORDER BY id DESC WHERE message='.$message_recu.'
qui sera en réalité si $message_recu= j'ai faim : (c'est bidon)
'SELECT * FROM livreor ORDER BY id DESC message= ' j'ai ',
et là le ' de j'ai est interprété comme message= j et la suite provoquera une erreur
Il faut donc les laisser passer jusqu'au script, mais les supprimer par stripslashes avant affichage. -
Bonjour,
Essayes avec ce que je t'ai donné
Mais pour la solution du site du zero, lis le post jusqu'au bout, il fait ensuite avant la requette à la base:# // Faire une requête sécurisée # $query = sprintf("INSERT INTO products (`name`, `description`, `user_id`) VALUES ('%s', '%s', '%d')", # mysql_real_escape_string($product_name, $link), # mysql_real_escape_string($product_description, $link), # $_POST['user_id']); # # mysql_query($query, $link);
A toi de choisir