Caractères
ravello
-
ravello -
ravello -
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. -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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