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

MySQL Discussion :

Apparition d'antislashes lors d'insertions en BDD


Sujet :

MySQL

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 20
    Points : 15
    Points
    15
    Par défaut Apparition d'antislashes lors d'insertions en BDD
    Bonjour tout le monde,

    Sur un serveur LAMP, j'ai mis en place un formulaire qui, via la méthode POST, insère des données dans une table mysql.

    Les magic quotes étant à off (j'ai vérifié deux fois avec les fonctions phpinfo() et get_magic_quotes_gpc() ), je me contente de faire un seul filtre avant l'insertion des données dans la table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $data = mysql_real_escape_string($_POST['data']);
    // J'insère ensuite $data dans la table via une requête classique INSERT

    Et bien curieusement, les données enregistrées en table contiennent des antislashes devant les apostrophes... J'ai mis en place une solution temporaire avec stripslashes()... Mais ça me paraît vraiment pas propre, pas sécurisé, et surtout, j'aimerais comprendre d'où viennent ces antislashes ?

    => Savez-vous d'où ils peuvent venir ?

    Merci par avance pour votre aide

  2. #2
    Membre éprouvé
    Homme Profil pro
    Touche à tout informatique autodidacte
    Inscrit en
    Janvier 2007
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Touche à tout informatique autodidacte

    Informations forums :
    Inscription : Janvier 2007
    Messages : 808
    Points : 912
    Points
    912
    Par défaut
    Bonjour,
    Dans une portion de la description de cette fonction :

    mysql_real_escape_string() protège les caractères spéciaux de la chaîne unescaped_string, en prenant en compte le jeu de caractères courant de la connexion link_identifier. Le résultat peut être utilisé sans problème avec la fonction mysql_query(). Si des données binaires doivent être insérées, cette fonction doit être utilisée.

    mysql_real_escape_string() appelle la fonction mysql_escape_string() de la bibliothèque MySQL qui ajoute un slash aux caractères suivants : NULL, \x00, \n, \r, \, ', " et \x1a.

    Cette fonction doit toujours (avec quelques exceptions) être utilisée pour protéger vos données avant d'envoyer la requête à MySQL.

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    Merci pour cette réponse Kabkab (Kabyle comme moi ?),

    Une chose que je pensais savoir, mais j'ai des doutes :

    Admettons,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $data = "Phrase'avec'des'apostrophes";
    Si j'insère tel quel $data dans une table, la requête plante à cause des apostrophes.
    Par contre, si avant insertion j'échappe les apostrophes avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $data = mysql_real_escape_string($data);
    le requête fonctionne, et la chaine de caractère enregistrée en base est bien "Phrase'avec'des'apostrophes"

    Mysql comprend que les antislashs sont des caractères d'échappement.

    Ce qui me fait penser que, je ne sais comment, la variable insérée est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $data = 'Phrase\\'avec\\'des\\'apostrophes';
    (comme si un double "échappement" s'était produit).

Discussions similaires

  1. pb double insertion dans BDD
    Par oceane751 dans le forum Requêtes
    Réponses: 3
    Dernier message: 26/12/2005, 09h59
  2. [SGBD] formulaire insertion date Bdd Mysql
    Par Mimisator dans le forum Administration
    Réponses: 7
    Dernier message: 30/11/2005, 09h38
  3. Insertion dans BDD type ACCESS
    Par NeHuS dans le forum ASP
    Réponses: 2
    Dernier message: 20/04/2005, 10h53
  4. Ralentissement lors d'INSERT successifs dans IB 6
    Par Papino dans le forum Débuter
    Réponses: 9
    Dernier message: 21/01/2005, 13h29
  5. [Postgresql] pb lors d'insertion de données
    Par bob20000 dans le forum Requêtes
    Réponses: 8
    Dernier message: 04/11/2002, 15h33

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