Stripslashes et résultats loufoques !

gwenda
Invité n'ayant pas de compte PHPfrance

09 juil. 2007, 09:31

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

gwenda
Invité n'ayant pas de compte PHPfrance

09 juil. 2007, 09:39

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

09 juil. 2007, 10:27

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 ;)
Quand tout le reste a échoué, lisez le mode d'emploi...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

09 juil. 2007, 10:51

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 :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 259 Messages

09 juil. 2007, 11:16

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.

Invité
Invité n'ayant pas de compte PHPfrance

09 juil. 2007, 18:44

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 :)