fredrick Posté 19 Avril 2006 Posté 19 Avril 2006 Voilà, J'ai un petit soucis avec l'insertion de données provenant d'un champ de formulaire dans une base de donnée. Lorsque le visiteur tape une phrase contenant un ' dans le champ du formulaire alors les données ne pas inscrites dans la bdd. Ex: rue d'Ecaussinnes Ca ne marchera pas à cause du ' Comment régler ce problème? Merci, Fred
NorSeb Posté 19 Avril 2006 Posté 19 Avril 2006 Bonjour, Tu peux utiliser la fonction addslashes() de PHP. Elle aura pour effet de mettre un anti-slash \ devant le '.
fredrick Posté 19 Avril 2006 Auteur Posté 19 Avril 2006 merci beaucoup. Je ne connaissais pas cette fonction. Bonne journée et encore merci, Fred
Anonymus Posté 19 Avril 2006 Posté 19 Avril 2006 Tu peux aussi utiliser les fonctions type htmlentities, qui vont transformer les caractères spéciaux en entités html.
Dan Posté 19 Avril 2006 Posté 19 Avril 2006 merci beaucoup. Je ne connaissais pas cette fonction. Donc j'imagine que tu ne connais pas stripslashes() à utiliser lors de la récupération pour enlever les backslashes ajoutés précédemment. Dan
arklif Posté 19 Avril 2006 Posté 19 Avril 2006 (modifié) Comme Dan, <? addslashes($masupervariable); ?> et <? stripslashes($masupervariable); ?> pour viré les \ avant je connaissais pas non plus... Modifié 19 Avril 2006 par arklif
petit-ourson Posté 19 Avril 2006 Posté 19 Avril 2006 Moi aimant les bases de données clean (sans caractères échappés ou convertis en html, on ne sait jamais ce que l'on fera des données), je conseille plutot d'utiliser : mysql_real_escape_string() ou mysql_escape_string()
Boo2M0rs0 Posté 19 Avril 2006 Posté 19 Avril 2006 Heu ... je comprends pas, pourquoi faudrait-il utiliser stripslashes avant l'affichage ?? Addslashes est utilisé pour que mysql comprene que le ' est un caractère et donc il n'enregistre pas le slash dans la base de donnée, donc quand on fait une requête, il ne renvoit pas de slash à php donc stripslashes est inutile et altère même les données (en supposant que l'utilisateur ait tapé intentionnelement des slash). Si vous êtes quand même obligés d'utiliser stripslashes, c'est que les données ont été échappés deux fois de suite (une première fois par magic_quote_gpc et une deuxième fois par addslashes() ). Sinon, il m'est arrivé avec certains scripts qu'ils ne marchent pas en ligne sur mon hebergement, parce que j'avais échappé les guillemets avec un slash (ça donne \' ). J'ai utilisé un autre échappement propre à mysql, qui consiste à doubler les guillemets ( ça donne '' ) et cette fois-ci je n'ai pas obtenu d'erreur mysql et le script a marché à merveille ...
petit-ourson Posté 19 Avril 2006 Posté 19 Avril 2006 (modifié) Attention également pour ceux qui ont les (satanées) magic_quotes d'activées ... Pour mysql, il est conseillé d'échapper plus que les quote il me semble. Modifié 19 Avril 2006 par petit-ourson
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant