Page 1 sur 1

Probleme d'apostrophe

Posté : 11 sept. 2009, 16:52
par rayaseplacbe
Bonjour à tous,
J'essaye de mettre en place un livre d'or sur mon site en flash, tout fonctionne bien sauf que mes apostrophes deviennent des \'
J'ai essayé d'utiliser la fonction $message=replace ("\'","'",$message);
Mais je n'arrive pas à trouver où la placer...
N'y a t-il pas une solution directe dans la base de données pour recevoir le texte au format text sans les antislashes ?
Mes champs Nom et messages sont au format VARCHAR.
Merci de vos lumières,
Pascal
<?php
 //connexion à la base
 $db=mysql_connect("base.siteweb, login, password);
  if(!$db){ print "erreur connection $db<br>"; exit; }

// on choisit la bonne base
 if(!mysql_select_db(base,$db)){
  print "erreur ".mysql_error()."<br>";
  mysql_close($db);
  exit;
 }

// Si l'utilisateur envoi un nouveau message,
// on l'ajoute à la base de données.
if (isset($_POST['nom']) && isset($_POST['message'])){	 
$nom=urlencode(rtrim($_POST['nom']));
$message=urlencode(rtrim($_POST['message']));
mysql_query("INSERT INTO livre SET nom = '$nom', message = '$message';"); 
}

// renvoi la liste des entrées à Flash.
$resultat=mysql_query('SELECT * FROM livre ORDER BY id DESC;');

// on boucle et on ajoute chaque entrée à la chaîne de caractère que l'on enverra à Flash.
$i = 0;
$renvoi ='';
while($colonne=mysql_fetch_array($resultat)){
$i++;
$renvoi .= 'nom'.$i . '=' . $colonne['nom'];
$renvoi .= '&message'.$i . '=' . $colonne['message'] . '&';
}

// on ajoute le nombre d'entrées.
$renvoi .= 'entrees=' . $i;

// on renvoi le tout à Flash.
echo $renvoi;
?>

Re: Probleme d'apostrophe

Posté : 11 sept. 2009, 21:28
par sylvaing26
Il existe la fonction
stripslashes ()
:wink:

Re: Probleme d'apostrophe

Posté : 12 sept. 2009, 12:26
par rayaseplacbe
J'ai mis ce code, ça ne fonctionne pas.
Y a t-il un problème de syntaxe ?
Merci,
Pascal
// Si l'utilisateur envoi un nouveau message,
// on l'ajoute à la base de données.
if (isset($_POST['nom']) && isset($_POST['message'])){	 
$nom=urlencode(rtrim($_POST['nom']));
$message=urlencode(rtrim($_POST['message']));
mysql_query("INSERT INTO livre SET nom = '$nom', message = '$message';"); 
}

// renvoi la liste des entrées à Flash.
$resultat=mysql_query('SELECT * FROM livre ORDER BY id DESC;');

// on boucle et on ajoute chaque entrée à la chaîne de caractère que l'on enverra à Flash.
$i = 0;
$renvoi ='';
while($colonne=mysql_fetch_array($resultat)){
$i++;
$renvoi .= 'nom'.$i . '=' . $colonne['nom'];
$renvoi .= '&message'.$i . '=' . $colonne['message'] . '&';
$nom=stripslashes($nom);
$message=stripslashes($message);
}

// on ajoute le nombre d'entrées.
$renvoi .= 'entrees=' . $i;

// on renvoi le tout à Flash.
echo $renvoi;
?>

Re: Probleme d'apostrophe

Posté : 12 sept. 2009, 12:44
par Dr@ke
Lorsque magic_quotes est activé, tous les caractères ' (guillemets simples), " (guillemets doubles), \ (antislash) et NUL sont échappés avec un antislash.
function Verif_magicquotes ($chaine)
{
if (get_magic_quotes_gpc()) $chaine = stripslashes($chaine);
return $chaine;
}
// Si l'utilisateur envoi un nouveau message,
// on l'ajoute à la base de données.
if (isset($_POST['nom']) && isset($_POST['message'])){   
$nom = Verif_magicquotes($_POST['nom']);
$message = Verif_magicquotes($_POST['message']);
$nom=urlencode(rtrim($nom));
$message=urlencode(rtrim($message));
mysql_query("INSERT INTO livre SET nom = '$nom', message = '$message';");
}

Re: Probleme d'apostrophe

Posté : 12 sept. 2009, 13:00
par rayaseplacbe
ça fonctionne très bien,merci :D

Re: Probleme d'apostrophe

Posté : 12 sept. 2009, 13:44
par Dr@ke
J'ai édité mon message car il n'était pas très clair...
magic_quotes ajoute des antislashs essentiellement au moment du Post de ton script.
Donc il faut utiliser stripslashes juste après le Post et donc dans ton cas avant l'insertion dans ta base donnée.
Et non l'utiliser au moment de l'affichage par echo.

PS: a part peut-être quelques cas particuliers mais dans ce cas, il est plus simple et plus sécurisé de mettre simplement magic_quotes à OFF...
Sinon évidemment dans ton script il n'est pas question des variables $_GET et $_COOKIES...