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

EDI, CMS, Outils, Scripts et API PHP Discussion :

[Configuration] filtrer le flux sortant une seule fois, en debut de code...


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 17
    Points : 9
    Points
    9
    Par défaut [Configuration] filtrer le flux sortant une seule fois, en debut de code...
    Bonjour,

    je me demandais si il y avais un moyen d'effectuer 1seul et unique traitement, sur tout flux sortant ( le html par exemple )
    je sais bien que ce n'est pas tres clair, mais je n'ai pas le vocabulaire adapté pour être plus clair...

    un peu comme changer le gestionnaire d'erreur avec set_error_handler
    mais pour les flux.
    si un exemple est plus parlant, ce serais quelque chose comme
    set_output_handler.
    set_stream_handler.

    enfin une sorte de filtre sur le html ( ou autre ) renvoyé.

    je suppose que ça existe, mais je n'ai rien trouvé.

    pourquoi je veux faire ça :
    mon hebergeur a magic_quotes_gpc a ON
    et je voudrais faire un seul stripslashes au lieu de le mettre 50fois toutes les 3lignes.

    si ça n'existe pas, désolé d'avoir posé cette question.
    et si vous connaissez quelque chose comme ça, merci de m'en faire part

  2. #2
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    Hello,

    alors, pour un filtre sur le flux sortant : ob_start( 'tafonctiondefiltre' );


    Mais pour les magic_quote_gpc (qui n'a absolument rien à voir avec le flux sortant) :
    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
    /**
     * Permet de s'affranchir du parametre magic_quotes_gpc pour les variables d'entrées GPC.
     *
     * @access      public
     * @param       boolean $wanted indique si on veut les magic_quotes_gpc à ON ou OFF
     */
     
    function wanted_magic_quotes_gpc( $wanted )
    {
        // Si la configuration voulue correspond à la configuration active,
        // alors il n'y a aucun changement à faire.
        if( $wanted == get_magic_quotes_gpc() )
            return;
     
        // Magic_quotes_gpc off => on fait les addslashes
        if( $wanted )
        {
            array_walk_recursive($_GET, 'addslashes');
            array_walk_recursive($_POST, 'addslashes');
            array_walk_recursive($_COOKIE, 'addslashes');
            array_walk_recursive($_REQUEST, 'addslashes');
        }
        // Magic_quotes_gpc on => on fait les stripslashes
        else
        {
            array_walk_recursive($_GET, 'stripslashes');
            array_walk_recursive($_POST, 'stripslashes');
            array_walk_recursive($_COOKIE, 'stripslashes');
            array_walk_recursive($_REQUEST, 'stripslashes');
        }
    }
    Et il te suffit donc d'appeler la fonction une seule fois, en début de script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wanted_magic_quotes_gpc( false );

    Par contre, la fonction array_walk_recursive n'existe que sous PHP 5 il me semble. Donc pour PHP 4 :
    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
    if(!function_exists('array_walk_recursive'))                    // Définie la fonction array_walk_recursive si elle n'existe pas
    {
        /**
         * Redefinie la fonction de PHP, si celle ci n'existe pas.
         * @ignore
         */
        function array_walk_recursive(& $array, $fct, $param=NULL)
        {
            foreach($array as $key => $item)
                if(is_array($item))
                {
                    array_walk_recursive( $array[$key], $fct, $param );
                }
                else $array[$key]=$fct($item, $key, $param);
        }
    }
    Google is watching you !

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    ah sympa ta fonction
    mise de coté, je teste demain.
    merci.
    ça resoud donc mon probléme, mais je vais quand même essayer de me documenter sur ob_start ( a priori, il y a toute une "paire" de fonction qui va avec, donc je prendrais le temps de regarder tout ça )

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

Discussions similaires

  1. [XSLT] Afficher une seule fois les attributs redondants...
    Par kobe dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 17/11/2005, 09h52
  2. [DLL] Ma DLL execute le Timer une seul fois !
    Par TOTO32 dans le forum Langage
    Réponses: 14
    Dernier message: 13/08/2005, 20h37
  3. Réponses: 1
    Dernier message: 19/03/2005, 22h47
  4. Réponses: 18
    Dernier message: 10/02/2005, 13h22
  5. Réponses: 2
    Dernier message: 30/11/2004, 11h48

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