Caractères

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

5 réponses

Alain42
 
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
ravello
 
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
Alain42
 
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
ravello
 
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
Alain42
 
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
ravello
 
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
Alain42
 
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
ravello
 
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
Alain42
 
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
ravello
 
ok

merci

bonne soirée
0