Page 1 sur 1

Stripslashes et résultats loufoques !

Posté : 09 juil. 2007, 09:31
par gwenda
Slt,
J'ai créé un formulaire de modif, càd avec des champs comportant comme valeurs celles déjà saisies précédemment.
Je ressors donc mes données brutes de ma base mysql, ce qui donnera par exemple :
$Adresse = row['adresse'];
$Observations = row['observations'];
Ce sont des champs qui peuvent contenir des apostrophes du genre [C ' est moi]
Ensuite, dans mon form, je mets :
<input type="text" name="adr" value="'.$Adresse.'">
<textarea name="observ">'.$Observations.'</textarea>
Là, j'observe que pour ces valeurs affichées dans mes champs de formulaire, chaque apostrophe est échappée par un antislash.
Par contre, quand je fais un simple "echo stripslashes($Adresse)", j'ai bien ma valeur correcte qui s'affiche, sans \ d'échappement
J'ai donc changé mon code en rajoutant des stripslashes :
<input type="text" name="adr" value="'.stripslashes($Adresse).'">
<textarea name="observ">'.stripslashes($Observations).'</textarea>
Et là, même résultat, mes apostrophes sont toujours échappées par un \

Et forcément, si on enregistre le formulaire (submit) sans avoir enlevé les \, eh bien au prochain affichage de mon form, je me retrouve avec un double voire un triple \ devant mes apostrophes, et ainsi de suite (car il doit sûrement être sauvegardé dans ma bdd comme un élément à part entière de mon texte) !!!

Ai-je manqué de comprendre qq chose dans l'utilisation de stripslashes(), ou bien s'agirait-il d'un comportement uniquement lié aux champs de formulaire ???
Comment résoudre ce pb SVP ?

Merci
Gwenda

Re: Stripslashes et résultats loufoques !

Posté : 09 juil. 2007, 09:39
par gwenda
J'ai omis de préciser, si jamais ça a une importance, que quand j'appelle la fonction magic_quotes_gpc(),cette fonctionnalité est bien activée : résultat = 1.
Slt,
J'ai créé un formulaire de modif, càd avec des champs comportant comme valeurs celles déjà saisies précédemment.
Je ressors donc mes données brutes de ma base mysql, ce qui donnera par exemple :
$Adresse = row['adresse'];
$Observations = row['observations'];
Ce sont des champs qui peuvent contenir des apostrophes du genre [C ' est moi]
Ensuite, dans mon form, je mets :
<input type="text" name="adr" value="'.$Adresse.'">
<textarea name="observ">'.$Observations.'</textarea>
Là, j'observe que pour ces valeurs affichées dans mes champs de formulaire, chaque apostrophe est échappée par un antislash.
Par contre, quand je fais un simple "echo stripslashes($Adresse)", j'ai bien ma valeur correcte qui s'affiche, sans \ d'échappement
J'ai donc changé mon code en rajoutant des stripslashes :
<input type="text" name="adr" value="'.stripslashes($Adresse).'">
<textarea name="observ">'.stripslashes($Observations).'</textarea>
Et là, même résultat, mes apostrophes sont toujours échappées par un \
Et forcément, si on enregistre le formulaire (submit) sans avoir enlevé les \, eh bien au prochain affichage de mon form, je me retrouve avec un double voire un triple \ devant mes apostrophes, et ainsi de suite (car il doit sûrement être sauvegardé dans ma bdd comme un élément à part entière de mon texte) !!!
Ai-je manqué de comprendre qq chose dans l'utilisation de stripslashes(), ou bien s'agirait-il d'un comportement uniquement lié aux champs de formulaire ???
Comment résoudre ce pb SVP ?
Merci
Gwenda

Posté : 09 juil. 2007, 10:27
par @rthur
Bonjour,

Regarde comment sont enregistrées tes données dans ta bdd avec PHPmyAdmin pour voir si les enregistrement n'ont bien été "slashés" qu'une seule fois.

Par ailleurs, utilise les balises
...[/ php] par pitié pour rendre tes posts lisibles ;)

Posté : 09 juil. 2007, 10:51
par Ryle
Comme il a posté en tant qu'invité j'ai édité son message pour le rendre un peu plus lisible et l'aérer un peu ;)

Regarde effectivement si tu ne fais pas un addslashes() lors de l'enregistement en base, ce qui aurait pour effet de doubler l'antislash ajouté par le magic quotes :)

Posté : 09 juil. 2007, 11:16
par Jules Petibidon
Hello,

Une autre piste à vérifier aussi serait la configuration de magic_quotes_runtime qui, si elle est active, rajoute des slashes en sortie de base.

Posté : 09 juil. 2007, 18:44
par Invité
Non, je ne fais pas d'addslashes() quand j'enregistre les données dans la BDD.
Et pour répondre à "Petitbidon", j'ai interrogé get_magic_quotes_runtime() qui m'a retourné la valeur 0, désactivé donc.


Regarde effectivement si tu ne fais pas un addslashes() lors de l'enregistement en base, ce qui aurait pour effet de doubler l'antislash ajouté par le magic quotes :)