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 :

donner la possibilité de switcher en mode debug ou non


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 500
    Billets dans le blog
    1
    Par défaut donner la possibilité de switcher en mode debug ou non
    Bonjour,
    la solution est sûrement simple mais je trouve pas


    Dans mon application, il y a un mode debug ou non. Les URLs sont http://dev.tickets.fr ou http://dev.tickets.fr/?debug=true.

    J'ai une méthode qui sert à l'affichage :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public function render(string $dir, string $file, $vars, bool $add_navbar = true, bool $debug = true) {
            $layout = $add_navbar ? 'Layout.php' : 'LayoutWithoutMenu.php';
            $navbar = $debug ? 'Navdebug.php' : 'Nav.php';
     
            $page = new PhpEcho($layout);
            $page->addBlock('nav', "block {$navbar}");
            $page->addBlock('body',$dir.' '.$file, $vars);
     
            echo $page;
        }
    Donc selon l'état de la variable booléenne $debug, on passe en mode debug ou non.

    Exemple d'appel de cette méthode :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ref_view_fileupload->render(
                dir: "block",
                file: "FormUpload.php",
                vars: [],
                add_navbar: true,
                debug: $data['debug'] ?? false
            );
    La variable $data est initialisée ainsi : $data['debug'] = (is_bool($_GET['debug'])) ?? false;.

    Ce que je souhaite, c'est ajouter dans les 2 fichiers Navdebug.php et Nav.php un bouton permettant de changer le mode (debug ou non debug). Comment faire ? S'il manque des informations, posez des questions. Merci d'avance.

  2. #2
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    3 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 3 020
    Par défaut
    Si tu écris $data['debug'] = (is_bool($_GET['debug'])) ?? false;, je peux te garantir que $data['debug'] sera systématiquement à false!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var_dump(is_bool('true')); // false
    var_dump(is_bool('false')); // false
    $_GET['debug'] est une chaîne de caractères.

    Plutôt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $data['debug'] = ( isset($_GET['debug']) && $_GET['debug'] === 'true' );

  3. #3
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 500
    Billets dans le blog
    1
    Par défaut
    Je m'en étais rendu compte et avais écrit ce code (qui fonctionne aussi) : $data['debug'] = isset($_GET['debug'])?($_GET['debug']=='true') : false;.

    Sinon, as-tu une idée pour mon besoin ?

  4. #4
    Membre Expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Par défaut
    Hello

    Pas sûr qu'envoyer un paramètre debug en querystring soit une bonne approche.

    En général le mieux est d'utiliser un fichier de configuration où l'on écrit p.ex APP_DEBUG=true (ou false) et lire ce fichier en php. Ne pas exposer la variable càd ne pas permettre de la modifier comme tu le fais, en jouant sur un paramètre d'URL.

    Si cela te parle, vois par exemple le package suivant :
    https://github.com/vlucas/phpdotenv

    Il permet de charger ton fichier de configuration et de récupérer tes variables sans effort.

  5. #5
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 500
    Billets dans le blog
    1
    Par défaut
    Merci, je regarderai demain matin, ayant les idées bien plus claires le matin...

  6. #6
    Membre Expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Par défaut
    J'ai oublié de mentionner que ?debug=true est à bannir en production car tu pourrais exposer des informations confidentielles comme des chemins d'accès, des infos serveur, etc. Avec ton approche le risque est réel.

    Avec une approche avec un fichier de configuration, le risque est quasi inexistant car, logiquement, ton fichier de configuration de la production aura false pour cette valeur. En effet, quand on déploie une application, on prends bien soin à ne pas toucher au fichier de configuration, chaque serveur (prod, testing, dev, etc) à son fichier personnalisé.

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

Discussions similaires

  1. Filtre + Countif marche en mode debug et non en continue
    Par guismoman60 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/12/2018, 19h40
  2. Réponses: 36
    Dernier message: 27/08/2015, 18h28
  3. Mode debug
    Par sivaller dans le forum Assembleur
    Réponses: 9
    Dernier message: 12/10/2004, 13h33
  4. chargement DLL mode debug/release
    Par bihorece dans le forum C++Builder
    Réponses: 3
    Dernier message: 21/06/2004, 14h05
  5. Recupération lors d'un plantage (en mode debug)
    Par aRCHiMeD dans le forum MFC
    Réponses: 3
    Dernier message: 15/01/2004, 17h09

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