Caractères

Fermé
ravello - 13 nov. 2007 à 18:33
 ravello - 14 nov. 2007 à 20:35
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

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
0
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
0
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.
0
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();
?>
0
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
0
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+
0
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.
0
donc si je comprends bien le code:{
echo '<p><strong>' . $donnees['pseudo'] . '</strong> :<br />' .stripslashes( $donnees['message'] ). '</p>';
} suffit


mais que penses tu du code du site du zero?n'est il pas valable?
0

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
0
ok

merci

bonne soirée
0