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 :

[Sécurité] Activation d'une variable globale


Sujet :

Langage PHP

  1. #1
    Membre actif Avatar de Ricou13
    Inscrit en
    Août 2002
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 292
    Points : 224
    Points
    224
    Par défaut [Sécurité] Activation d'une variable globale
    Bonjour,

    J'ai un petit souci avec la mise en forme de mes chaines de caractères avant utilisation dans des requètes SQL.

    Lors du développement en local, j'utilisais ceci pour traiter les guillemets:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function toSQL($variable)
    {
    	//Retourne la variable formatée en chaine de caractère pour les requètes SQL
    ...
    		$temp = str_replace('"', '\"', $variable);
    		return '"' . $temp . '"';
    ...
    Lorsque je mets le site chez mon hébergeur, je dois remplacer ce code par un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return '"' . $variable . '"';
    Je pense que c'est un flag dans PHP qui doit être activé pour que se soit automatique mais je ne sais pas lequel ni comment l'activer (je n'ai jamais ouvert le PHP.ini)

    Pourriez-vous m'expliquer la marche à suivre ?
    Merci

  2. #2
    Membre régulier Avatar de rabobsky
    Inscrit en
    Novembre 2003
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 123
    Points : 78
    Points
    78
    Par défaut
    et qu est ce qu'il y a comme erreur quand tu met le premier code sur le serveur?

  3. #3
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Ton hebergeur a sûrement magic_quotes_gpc d'activé.

    Il faut mettre au début de chacun de tes scripts

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    function stripArray(&$array)
    {
         foreach($array as $k => $v)
         {
              if(is_array($v))
              {
                   stripArray($array[$k]);
              }
              else
              {
                   $array[$k] = stripslashes($v);
              }
         }
    }
     
    if(get_magic_quotes_gpc())
    {
        stripArray($_GET);
        stripArray($_POST);
        stripArray($_COOKIE);
        stripArray($_REQUEST);
    }

  4. #4
    Membre actif Avatar de Ricou13
    Inscrit en
    Août 2002
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 292
    Points : 224
    Points
    224
    Par défaut
    Citation Envoyé par loufoque
    Ton hebergeur a sûrement magic_quotes_gpc d'activé.
    C'est ça ! En lisant ton code, j'ai testé avec 'get_magic_quotes_gpc()' et, effectivement, magic_quotes_gpc est actif chez l'hébergeur mais pas chez moi.

    Ce que je ne comprend pas, c'est l'utilité de ton code qui utilise une fonction récursive (donc gourmande en ressources) pour enlever les slashes ajoutés automatiquement par l'hébergeur afin que ma fonction les réajoutes par le suite ?

    Ne serait-il pas plus simple de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function toSQL($variable)
    {
       //Retourne la variable formatée en chaine de caractère pour les requètes SQL
    ...
         // Si l'hébergeur utilise les Magic quotes, on ne touche pas à la chaine
         // sinon, on protège manuellement les caractères spéciaux
         if(get_magic_quotes_gpc())
                 return '"' . $variable . '"';
          else
                 return '"' . addslashes($variable) . '"';
    ...

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

Discussions similaires

  1. Portée d'une variable globale
    Par Giill dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 27/12/2005, 10h13
  2. [quai debutant] : creation d'une variable globale.
    Par bapman344 dans le forum Access
    Réponses: 4
    Dernier message: 23/06/2005, 11h33
  3. Réponses: 5
    Dernier message: 25/05/2005, 22h29
  4. Comment déclarer une variable globale
    Par davkick dans le forum C
    Réponses: 13
    Dernier message: 20/05/2005, 18h50
  5. utilisation d'une variable globale
    Par ZZ dans le forum ASP
    Réponses: 3
    Dernier message: 03/12/2003, 19h11

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