Probleme d'apostrophe

Petit nouveau ! | 8 Messages

11 sept. 2009, 16:52

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;
?>

Mammouth du PHP | 686 Messages

11 sept. 2009, 21:28

Il existe la fonction
stripslashes ()
:wink:

Petit nouveau ! | 8 Messages

12 sept. 2009, 12:26

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;
?>

Mammouth du PHP | 985 Messages

12 sept. 2009, 12:44

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';");
}
Modifié en dernier par Dr@ke le 12 sept. 2009, 13:33, modifié 1 fois.
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Petit nouveau ! | 8 Messages

12 sept. 2009, 13:00

ça fonctionne très bien,merci :D

Mammouth du PHP | 985 Messages

12 sept. 2009, 13:44

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...
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.