IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

mysql_real_escape_string() insère des backslashes de plus [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé Avatar de jesslegende
    Développeur informatique
    Inscrit en
    Août 2009
    Messages
    156
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2009
    Messages : 156
    Par défaut mysql_real_escape_string() insère des backslashes de plus
    bonjour,
    j'ai un problème avec la fonction mysql_real_escape_string(), quand je suis en local tout marche bien mais une fois j'envoie les fichiers de code sur le site cette fonction m’insère des backslashes de plus, ex:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $var="l'apostropheestla";
     
    $var=mysql_real_escape_string($var);
     
    mysql_query("insert into table (champx) values('$var')");

    sur la base de données je trouve l\'apostropheestla.

    est ce quelqu'un a déjà eu un problème pareil ?

    merci d'avance pour vos réponses.

  2. #2
    Membre confirmé Avatar de jesslegende
    Développeur informatique
    Inscrit en
    Août 2009
    Messages
    156
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2009
    Messages : 156
    Par défaut
    pour tout ceux qui ont le même problème voilà une réponse:
    http://stackoverflow.com/questions/1...ashes-in-mysql

    c'est les magic_quotes_gpc() qui sont on

    j'ai pas encore tester mais pense que le problème viens de là.

  3. #3
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    c'est les magic_quotes_gpc() qui sont on
    j'ai pas encore tester mais pense que le problème viens de là.
    Il y a très forte chance que ce soit cela.

    Il faut quelle soit à Off, car cette directive est vouée à disparaitre (équivalent à Off).
    Regarde du coté du php.ini (en local), et coté hébergeur, la plupart offrent le moyen de le modifier via un panel admin (au pire, de rajouter un code dans le .htaccess ou encore de faire un ini_set() en Php).

  4. #4
    Membre confirmé Avatar de jesslegende
    Développeur informatique
    Inscrit en
    Août 2009
    Messages
    156
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2009
    Messages : 156
    Par défaut
    Citation Envoyé par RunCodePhp Voir le message
    Regarde du coté du php.ini (en local), et coté hébergeur, la plupart offrent le moyen de le modifier via un panel admin (au pire, de rajouter un code dans le .htaccess ou encore de faire un ini_set() en Php).
    tout à fait c'était ça la cause de ce problème que j'ai résolu en insérant la fonction stripslashes avant de traiter mes variable c'est labourieux mais sûr comme solution et j'ai bien peur que ce soit la seul puisque ce paramétre n'est pas modifiable avec ini_set() et sur le lien que j'ai mentioné plus haut y a la fonction set_magic_quotes_gpc(0) qui n'existe pas du moins pour la version 5.2.17 du php et les htaccess n'ont pas marché pour moi peut être je suis trompé quelque part.

    je te remercie RunCodePhp pour tes conseils

  5. #5
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    j'ai bien peur que ce soit la seul puisque ce paramétre n'est pas modifiable avec ini_set() et sur le lien que j'ai mentioné plus haut y a la fonction set_magic_quotes_gpc(0) qui n'existe pas du moins pour la version 5.2.17 du php et les htaccess n'ont pas marché pour moi peut être je suis trompé quelque part.
    Rapproches toi de ton hébergeur (forum, faq, tutos, bases de connaissances, etc ... voire leur demander directement), il doit bien avoir moyen de le faire.

    Ca me parait inconcevable de nos jours qu'un hébergeur activant cette directive ne donne pas la possibilité de la désactiver.
    Théoriquement ça devrait être possible via le .htaccess, il y a peut être une syntaxe propre à cet hébergeur.

  6. #6
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    salut,

    pourquoi se prendre la tête...

    il suffit de tester si la fonctionnalité existe et est activée et de faire l'échappement ou non en fonction de ça (comme préconisé dans la doc php d'ailleurs)...


  7. #7
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    pourquoi se prendre la tête...
    Où serait le caractère "anormal" ou "prise de tête" de s'approcher de son hébergeur pour savoir comment désactiver une directive où il est dit depuis 10 ans qu'il faut la désactiver, qui plus est vouée à disparaitre ?

    Personnellement je ne vois pas où

  8. #8
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    je dis juste qu'il est super simple de tester ça (un if) pour appliquer ou non l'échappement...


  9. #9
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    je dis juste qu'il est super simple de tester ça (un if) pour appliquer ou non l'échappement...
    Non, ce n'est pas aussi simple.
    Puis ce n'est pour appliquer ou pas un échappement, c'est pour supprimer les échappements (stripslashes) mis systématiquement du fait que cette directive est activée par défaut.


    Cette directive au nom de magic_quotes_gpc quand elle est à On (activée) va échapper automatiquement toutes les données dans GET POST et COOKIE (d'où GPC).
    Donc certes, c'est simple de faire un if, mais le faire une par une à toutes ces données, là ça risque fort d'être long, pénible, (prise de tête) et surtout polluer son code.


    Il faudra alors plutôt faire un code automatisé pour parcourir chaque tableau GET/POST/COOKIE, et aussi chaque éléments qui les composent qui eux aussi peuvent être un tableau à 1 voir plusieurs dimensions.
    Faire quelque chose de récursif sera quasi obligatoire.

    On est loin d'un banal if ... non ?


    Alors que si je prends mon cas pour exemple :
    En local WampServer me permet de décocher cette directive (la désactiver), donc j'ai aucun code à rajouter où que ce soit.

    Du coté de mon hébergeur, c'est quasi la même chose, une case à décocher via le panel d'administration du site, donc là aussi il n'y a aucun code à rajouter nulle pas.
    Ca fait des années que ça se passe comme ça, et c'est un mutualisé, je précise.
    Bref, il y a rien à faire, même pas un if. Que demande le peuple.

    Personnellement je trouve que ça vaut le coup de demander, non ?
    Ceci dit, chacun sa démarche, j'en conviens.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. inséré des formule excel dans VB
    Par amel95140 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/12/2005, 17h21
  2. [ZIP] zipper des fichiers de plus d'un mega
    Par sylviefrfr dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 26/10/2005, 14h40
  3. Permuter des valeurs, le plus rapidement possible?
    Par danje dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 27/09/2005, 21h51
  4. show processlist : des processus de plus de 10000 sec.
    Par hpfx dans le forum Administration
    Réponses: 11
    Dernier message: 07/01/2005, 20h28
  5. recup des enregistrement les plus récents.
    Par julien_guy dans le forum Langage SQL
    Réponses: 8
    Dernier message: 29/06/2004, 11h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo