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

Langage PHP Discussion :

Insertion de donnée dans une base MySql


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 73
    Points : 42
    Points
    42
    Par défaut Insertion de donnée dans une base MySql
    Actuellement je fais cela :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if (!get_magic_quotes_gpc())
    {
    $surname=addSlashes($surname);
    $name=addSlashes($name);
    }
     
    …
    $result=$this->db->query($sql);

    Les données avec un apostrophe sont bien insérées dans la base. Par contre est-ce que cela suffit pour se protéger des injections Sql ou faut–il en plus utiliser la fonction mysql_real_escape_string ?

    Il faut utiliser les deux fonctions ou l’une ou l’autre ?
    Je me mélange un peu les pinceaux je dois dire…

  2. #2
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    La meilleure solution est :
    - de désactiver les magic_quotes (utiliser stripslashes si get_magic_quotes_gpc retourne TRUE) ;
    - d'utiliser la fonction d'échappement de la chaîne de caractère dédiée au connecteur à la base (mysql_real_escape_string pour le connecteur mysql).

    Il ne faut pas utiliser mysql_real_escape_string et addslashes ou mysql_real_escape_string et les magic_quotes ensemble, sinon tu auras des antislashs en trop dans ta base...

    addslashes suffit en pratique pour se protéger des injections SQL, mais il est préférable d'utiliser les fonctions fournies par le connecteur

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 73
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par Eusebe Voir le message
    La meilleure solution est :
    - de désactiver les magic_quotes (utiliser stripslashes si get_magic_quotes_gpc retourne TRUE) ;
    - d'utiliser la fonction d'échappement de la chaîne de caractère dédiée au connecteur à la base (mysql_real_escape_string pour le connecteur mysql).

    Il ne faut pas utiliser mysql_real_escape_string et addslashes ou mysql_real_escape_string et les magic_quotes ensemble, sinon tu auras des antislashs en trop dans ta base...

    addslashes suffit en pratique pour se protéger des injections SQL, mais il est préférable d'utiliser les fonctions fournies par le connecteur
    Ok pour la réponse, j'ai encore une question
    lorsque mon champ $surname vaut "test'#" cela fait bugger ma requête SQL.

    C'est quoi le souci avec le caractère #?

  4. #4
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Peux-tu nous montrer le code SQL de la requête correspondante ?

    Et quel est le message d'erreur renvoyé par MySQL ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 73
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par Eusebe Voir le message
    Peux-tu nous montrer le code SQL de la requête correspondante ?

    Et quel est le message d'erreur renvoyé par MySQL ?
    Euhh en fait je viens de trouver mon problème, je faisais un sustr sur la variable après la fonction addslashes donc du coup il me manquait un caractère.
    C'est pour cela que j'avais un problème.
    Il y a bien sûr pas de souci avec le caractère '#'


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

Discussions similaires

  1. [MySQL] Insertion de données dans une base MySQL via un formulaire
    Par rcomlan dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 09/02/2015, 19h53
  2. Insertion de données dans une base MySQL
    Par arm3366 dans le forum SGBD
    Réponses: 4
    Dernier message: 26/02/2013, 09h46
  3. [MySQL] Problème d'insertion de données dans une base MySql à partir d'un fichier csv
    Par kazabandi dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 22/12/2010, 18h05
  4. Réponses: 3
    Dernier message: 27/03/2006, 17h25
  5. Réponses: 11
    Dernier message: 01/06/2005, 15h18

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