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 :

[POO] Encapsulation de $_GET & cie


Sujet :

Langage PHP

  1. #1
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut [POO] Encapsulation de $_GET & cie
    Salut,

    Je suis à la recherche d'un wrapper de $_GET, $_POST, $_REQUEST, $_COOKIE, .... ceci afin de faire des traitements automatiques dessus et d'éviter d'avoir à faire à chaque fois isset()...

    Quelqu'un aurait-il un code du tonnerre sous la main ? Bien codé et tout et tout ?

    Merci

  2. #2
    Membre averti

    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2005
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 195
    Points : 425
    Points
    425
    Par défaut
    Salut,

    Il me semble qu'un début de script a été posté par Genova => ici

    PhpBB utilise aussi un systeme de traitement de variable dans common.php peut être que ça peu t'aider

    Enfin j'ai peu être mal compris ce que tu demander :/

    Cordialement.

  3. #3
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Merci de ta contribution qui ne me satisfait malheureusement pas.
    En faite j'aimerais faire un truc du genre
    Request->get('name');
    qui me renvoie false si la variable n'existe pas, sinon renvoie la valeur de $_GET['name'] (en gros)

    Je peux très facilement le faire moi meme, mais je veux être sur de ne rien laisser échapper...

  4. #4
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class Request
    {
        function get($varname)
        {
               return @$_GET[$varname];
        }
    }
    C'est compliqué à écrire hein..

  5. #5
    Membre actif Avatar de hunter
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2004
    Messages : 208
    Points : 216
    Points
    216
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ($_GET["salut"])
    sois avec un @ ou avec les erreures notices désactivés

  6. #6
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Citation Envoyé par loufoque
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return @$_GET[$varname];
    Ca retourne false si la variable n'existe pas ???
    Tiens je connaissais pas, j'ai bien fait de poser ma question moi

  7. #7
    Membre habitué
    Avatar de Amnesiak
    Profil pro
    Inscrit en
    Août 2002
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2002
    Messages : 137
    Points : 151
    Points
    151
    Par défaut
    Je pense plutôt que ça retourne NULL, ce qui est plus logique puisque NULL représente l'absence de valeur.
    Si néanmoins tu souhaites travailler à l'ancienne avec une valeur de retour à FALSE, un simple test de ce genre suffit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function get($varname)
    {
        return (isset($_GET[$varname])) ? $_GET[$varname] : FALSE;
    }

  8. #8
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Je viens de faire le test et il me retourne bien false ! C'est cool mais ca ne me suffit pas...
    EDIT, ben non, autant pour moi, ca retourne NULL

  9. #9
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Pour le false fait ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class Request 
    { 
        function get($varname) 
        { 
               if (@$_GET[$varname] === NULL) return false; else return true;
        } 
    }
    (pas trop compliqué )

    Sinon que cherches tu à faire d'autre? C'est résolu?

  10. #10
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if (@$_GET[$varname] === NULL) return false; else return true;
    Ah ben non ca marche pas ça ! ça retourne true

    Sinon c'est pas vraiment résolu, j'attends qu'il y ai d'autres illuminations...

    En attendat j'ai fais ceci :

    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 get($variable) {
            if ($this->exist($variable)) {
                return (get_magic_quotes_gpc()?$this->_stripslashes($_REQUEST[$variable]):$_REQUEST[$variable]);
            } else {
                return false;
            }
        }
     
        function exist($variable) {
            return isset($_REQUEST[$variable]);
        }
     
        function _stripslashes($value) {
            if (is_string($value)) {
                $value = stripslashes($value);
            } else if (is_array($value)) {
                foreach($value as $key => $val) {
                    $value[$key] = $this->_stripslashes($val);
                }
            }
            return $value;
        }
    Qu'en pensez-vous ? 8)

  11. #11
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Lol euh autant pour moi
    Sinon pourquoi fais-tu: if ($this->exist($variable)) au lieu de if (isset($_REQUEST['variable']) dirrectement?

  12. #12
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Par ce que je fournis une méthode faisant ce test d'existence (exist) et que je veux éviter la duplication de code ...

  13. #13
    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
    Ca retourne false si la variable n'existe pas ???
    Non ça retourne NULL, ce qui me semble mieux.

  14. #14
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    Salut,

    J'ai essayé ça chez moi et ça fonctionne...
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    class Util { 
     
     
       function get($variable) {
     
          if(isset($_REQUEST[$variable])) {
             return (get_magic_quotes_gpc()?$this->_addslashes($_REQUEST[$variable]):$_REQUEST[$variable]);
          }
          else return false;
     
       }
     
     
       function _addslashes($value) {
     
          if(is_string($value)) return addslashes($value);
          elseif(is_array($value)) {
             foreach ($value As $key => $item) {
                if(is_array ($item)) $this->_addslashes($item);
                else $value[$key] = addslashes($item);
             }
          }
          return $value;
       }
     
    }
     
    if(isset($_REQUEST['sub'])) {
     
       $u = new Util;
     
       $variable = null;
       $rep=(!$u->get($variable))?('false'):($u->get($variable));
       echo "<pre>"; var_dump($rep); echo "</pre><hr />";
     
       $variable = "seul";
       $rep=(!$u->get($variable))?('false'):($u->get($variable));
       echo "<pre>"; var_dump($rep); echo "</pre><hr />";
     
       $variable = "plusieurs";
       $rep=(!$u->get($variable))?('false'):($u->get($variable));
       echo "<pre>"; var_dump($rep); echo "</pre><hr />";
     
    }
    ?>
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <input type="hidden" name="seul" value="l'essentiel de toto" />
    <select name="plusieurs[]" multiple="true">
    <option value="l'apostrophe1" />1</option>
    <option value="l'apostrophe2" />2</option>
    <option value="l'apostrophe3" />3</option>
    </select>
    <input type="submit" name="sub" value="ok" />
    </form>
    ;-)

  15. #15
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Salut ska...

    J'imagine que tu n'as pas magic_quotes_gpc à on car dans le cas contraire, tu te retrouverais avec deux fois antislashes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    +---------+-----+----------+-----+------------+
    | user    | --> | magic    | --> |  get()     |
    +---------+-----+----------+-----+------------+
    | l'arbre | --> | l\'arbre | --> | l\\\'arbre |
    +---------+-----+----------+-----+------------+
    C'est stripslashes qu'il faut utiliser et pas addslashes

  16. #16
    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
    remplace "addslashes(" par "stripslashes(" dans le code de ska est c'est bon.

Discussions similaires

  1. [POO] Conseil encapsulation : A.B.C.D.E.F.para1, c'est pas trop moche ?
    Par Djobird dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 03/04/2007, 12h27
  2. Réponses: 31
    Dernier message: 30/03/2006, 17h57
  3. [POO] Probleme avec $_GET
    Par Corwen dans le forum Langage
    Réponses: 21
    Dernier message: 02/03/2006, 15h53
  4. Algorithme d'Avizienis et cie
    Par zul dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 09/11/2002, 00h19
  5. [MFC](encapsulation ADO) ou placer le code
    Par philippe V dans le forum MFC
    Réponses: 2
    Dernier message: 13/06/2002, 15h58

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