Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1573 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Problème avec addslashes

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème avec addslashes

n°823995
latruffe
Bdovore
Posté le 16-08-2004 à 10:35:00  profilanswer
 

Salut à tous,
 
je rencontre pour la première fois un problème assez bizarre lors de l'utilisation de addslashes.
 
J'ai un script chargé d'insérer des infos dans une table. Il est de la forme :

Code :
  1. $query = "INSERT INTO ma_table (titre) VALUES '".addslashes(mon_titre)."'";


 
Mon titre est : A l'ombre des jeunes filles en fleurs.
 
Si j'affiche la query avant exécution, j'obtiens :
 

Code :
  1. INSERT INTO ma_table (titre) VALUES 'A l\'ombre des jeunes filles en fleurs';


 
Parfait me direz vous sauf que une fois l'enregistrement inséré dans la base, il devient : A l'ombre des jeunes filles en fleurs (le slash a disparu).
 
C'est la première fois que ça me fait ça. Une idée sur l'origine de ce problème ?

mood
Publicité
Posté le 16-08-2004 à 10:35:00  profilanswer
 

n°824235
BenJ9002
Posté le 16-08-2004 à 14:36:25  profilanswer
 

Si tu regardes ce qui est stoqué dans ta base à l'aide de phpmyadmin, c'est normal que le slash n'apparaisse pas. PhpMyAdmin fait automatiquement les stripslashes qui vont bien à l'affichage.

n°824255
latruffe
Bdovore
Posté le 16-08-2004 à 14:52:07  profilanswer
 

BenJ9002 a écrit :

Si tu regardes ce qui est stoqué dans ta base à l'aide de phpmyadmin, c'est normal que le slash n'apparaisse pas. PhpMyAdmin fait automatiquement les stripslashes qui vont bien à l'affichage.


 
Tu es sûr de ça ? j'ai l'impression que dans certains cas, je vois mes anti-slashes (mais peut-être est-ce parce que j'ai doublé les addslashes) [:totoz]
 
Merci en tout cas.

n°824292
BenJ9002
Posté le 16-08-2004 à 15:26:48  profilanswer
 

Je suis certain, j'ai aucun problème de slashes dans mes requetes et dans phpmyadmin, ils n'apparaissent pas.  
 
Pour confirmer, t'as qu'a faire une requete  
SELECT titre FROM ma_table; et afficher le résultat ;) Tu verras les slashes si tu ne les supprimes pas avec stripslashes :p  
 
Pour ceux que tu vois, c'est bien parce que tu as du les doubler ;)

n°1138906
IvanleFou
Posté le 03-07-2005 à 23:24:31  profilanswer
 

Désolé de déterrer ce topic mais j'ai un soucis similaire.
 
Donc j'ai un formulaire que je remplis (mettons avec ca: "l'ordinateur" ), je valide, je recupe mes champs et je fais un coup de addslashes dessus (donc j'obtiens "l\'ordinateur" ) et je fais un INSERT dans la base de données.
 
Le problème est que dans la table les "'" ne sont pas echappés (j'ai donc exactement la même chose que j'ai mis dans le formulaire) alors que j'ai bien vérifié qu'a l'INSERT ils y sont, puis de toute manière si cela n'était pas le cas j'aurais une erreur de MYSQL.
 
Comment je sais qu'ils n'y sont pas:
- je fais un SELECT sur ma ligne et j'affiche sans striplashes ou autre et j'obtiens "l'ordinateur". Ensuite si j'essai de nouveau de faire un INSERT avec cette valeur j'ai une erreur, preuve que les "\" ne sont pas présents.
- j'ai consulté la table par le client en ligne de commande et les "\" n'apparaissent pas. Je suppose que le client en ligne de commande ne fait pas de striplashes.
 
La je comprends pas trop :heink:  
Merci d'avance pour votre aide :hello:

n°1138954
autofill
Posté le 04-07-2005 à 00:31:57  profilanswer
 

C'est tout à fait normal...
 
Le addslash est là pour que les requêtes ne plantent pas quand on met des quotes dans le nom d'un champ. Le backslash est un caractère d'échappement.
 
Le caractère d'échappement devant la single quote "\'" est là pour signaler à mysql qu'il ne doit pas interpréter le caractère qui le suit, et fait donc en sorte que la single quote fasse partie de la chaînes de caractères.
 
Ca sert également à éviter que des petits malins ne fasse des injections comme ils disent dans la doc : placer des quotes dans un champ de formulaire de façon à placer des conditions supplémentaires dans une requête (pour s'authentifier notamment).
 
http://php.belnet.be/manual/fr/function.addslashes.php
 
Et donc, une fois que les données sont en db, il n'y a aucun intérêt à laisser les backslashes dedans. Et de toute façon, le caractère d'échappement n'est pas un caractère en soit (ai un peu de mal à expliquer là ;-)).
Comme le "\n" pour new line, ni le "\" ni le "n" ne sont imprimés. Le "\n" est remplacé par le caractère qui correspond à une nouvelle ligne.
 
Mais si tu veux, une fois que tu récupères ta donnée de la DB, rien ne t'empêche de refaire un addslash dessus.
 
Et il ne faut pour moi jamais mettre de "\" en DB car en DB, la longueur de tes champs est déterminée à l'avance (varchar 50 par expl). Donc dans tes formulaires, tu devrais utiliser l'attribut maxlength="50" sur tes champs. Mais si ta donnée fait 50 caractères et que tu as 3 quotes dedans, ça fait 53 caractères à mettre en DB!. Et là, ça devient trop compliqué à gérer. Donc pas de backslashes en DB compris?? ;-)
 
Si tu ne comprends toujours pas, n'hésite pas.
 
A+


Message édité par autofill le 04-07-2005 à 00:35:19
n°1138961
IvanleFou
Posté le 04-07-2005 à 00:53:34  profilanswer
 

Okay donc en fait c'est tout à fait normal! Ca me rassure, je sais à quoi m'en tenir maintenant :D  
 
Merci pour ta bonne explication autofill :hello:

n°1139011
esox_ch
Posté le 04-07-2005 à 08:14:04  profilanswer
 

arretez de faire des addslashes partout :D un mysql_real_escape_string va tres bien (ça existe aussi sur mysqli)


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Problème avec addslashes

 

Sujets relatifs
Problème de sessionProblème d'Envoi de Résultats d'un Formulaire
( AIDE ) Problème de variablesproblème utf8 (urgent)
probleme tableauProblème lié à la création de MDE sur une application ACCESS
[html]Probleme facile => affichage de pages sans tout rafraichirProblème pour voir mes tables oracles avec sqlplus
[mySQL] probléme avec addslashesProbleme addslashes, stripslashes ?
Plus de sujets relatifs à : Problème avec addslashes


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR