Probleme d'apostrophe

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Probleme d'apostrophe

Re: Probleme d'apostrophe

par Dr@ke » 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...

Re: Probleme d'apostrophe

par rayaseplacbe » 12 sept. 2009, 13:00

ça fonctionne très bien,merci :D

Re: Probleme d'apostrophe

par Dr@ke » 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';");
}

Re: Probleme d'apostrophe

par rayaseplacbe » 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;
?>

Re: Probleme d'apostrophe

par sylvaing26 » 11 sept. 2009, 21:28

Il existe la fonction
stripslashes ()
:wink:

Probleme d'apostrophe

par rayaseplacbe » 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;
?>