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 ne fonctionne pas toujours dans mon script [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Invité
    Invité(e)
    Par défaut mysql_real_escape_string ne fonctionne pas toujours dans mon script
    Bonjour,

    j’utilise phpreader afin de récupérer des éléments depuis un fichier .xls, et les insérer en DB.

    lorsque j'utilise mysql_real_escape_string afin d'échapper les quotes dans le traitement rien ne se passe , par contre lorsque je test sur une variable externe, j'échappe bien les quotes.

    Voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $contenu = $data->sheets[0]['cells'][$i][$j];
    //$contenu=htmlentities($contenu, ENT_QUOTES, "UTF-8");
    $contenu = utf8_encode(htmlspecialchars($contenu, ENT_QUOTES));
    //$contenu = utf8_encode(addslashes($contenu));
    $tab_cellule[$j] = $contenu;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $createur=mysql_real_escape_string(addslashes($tab_cellule[++$a]));die($createur); //toej'jn
    Cet essai fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $str=mysql_real_escape_string("toej'jn");die($str); //toej\'jn

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    euh : mysql_real_escape_string() échappe déjà les données en paramètre. Pourquoi tu viens y coller un addslashes() au milieu ?

    Ensuite, htmlspecialchars() n'a d'utilité que pour le rendu html et rien d'autre. Pour manipuler tes données dans tes script, tu ne dois pas l'utiliser.

    Voici à quoi devrait ressembler ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
     
    $contenu         = utf8_encode($data->sheets[0]['cells'][$i][$j]);
    $tab_cellule[$j] = $contenu;
    $createur        = mysql_real_escape_string($tab_cellule[++$a]);
     
     
    // et pour le rendu html d'une page web
    echo htmlspecialchars($contenu, ENT_COMPAT, 'utf-8');
     
    // ou
     
    mb_internal_encoding('utf-8'); // à définir une fois
    echo htmlspecialchars($contenu, ENT_COMPAT);
    PS : les fonctions mysql_* sont obsolètes, il faut migrer vers mysqli_* ou PDO

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    Bonjour,

    euh : mysql_real_escape_string() échappe déjà les données en paramètre. Pourquoi tu viens y coller un addslashes() au milieu ?
    Pour tester car mysql_real_escape_string() ne fonctionnait pas

    Citation Envoyé par rawsrc Voir le message
    Ensuite, htmlspecialchars() n'a d'utilité que pour le rendu html et rien d'autre. Pour manipuler tes données dans tes script, tu ne dois pas l'utiliser.
    oui merci, C'est ce que j'ai lu en me documentant dernièrement

    Citation Envoyé par rawsrc Voir le message
    Voici à quoi devrait ressembler ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
     
    $contenu         = utf8_encode($data->sheets[0]['cells'][$i][$j]);
    $tab_cellule[$j] = $contenu;
    $createur        = mysql_real_escape_string($tab_cellule[++$a]);
     
     
    // et pour le rendu html d'une page web
    echo htmlspecialchars($contenu, 'utf-8');
     
    // ou
     
    mb_internal_encoding('utf-8'); // à définir une fois
    echo htmlspecialchars($contenu);

    PS : les fonctions mysql_* sont obsolètes, il faut migrer vers mysqli_* ou PDO
    Merci j'ai résolu le problème en passant par cette solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $contenu = $data->sheets[0]['cells'][$i][$j];
    $contenu=htmlentities($contenu, ENT_QUOTES, "UTF-8");
     
    $createur  = mysql_real_escape_string($tab_cellule[++$a]);

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    effectivement pour fonctionner mysql_real_escape_string() a besoin d'une connexion ouverte avec la base de données.

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

Discussions similaires

  1. [MySQL] erreur dans mon script mysql_real_escape_string
    Par tahtah223 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 28/04/2015, 08h46
  2. [PHP 5.4] is_file() et is_dir() ne fonctionnent pas dans mon script ?
    Par zakuli dans le forum Langage
    Réponses: 2
    Dernier message: 23/10/2014, 10h03
  3. pb dans mon script, je sais pas comment faire
    Par gengiskhan72 dans le forum C
    Réponses: 5
    Dernier message: 30/06/2009, 20h16
  4. Requete SQL BETWEEN fonctionne dans le bash mais pas dans mon script?
    Par ssc37 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 09/03/2009, 11h01
  5. Réponses: 1
    Dernier message: 10/04/2007, 22h27

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