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 :

Stockage de connection string et environnement de développement différent


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé Avatar de Aizen64
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 561
    Points : 462
    Points
    462
    Par défaut Stockage de connection string et environnement de développement différent
    Bonsoir,

    J'ai une problématique en matière de sécurité et de modularité de code en ce qui concerne les paramètres de connexion à une BDD.

    Si je stocke en dure la les données de connexion à la BDD dans une variable, je devrai systématiquement la modifier en fonction de l'environnement dans lequel le site tourne. Pas franchement pratique.

    Quelle serait la solution simple au problème en PHP ?

    Si je reprends ce que j'ai fait il y a bien longtemps en C#, ce type de contenu est stocké dans un fichier app.config ou web.config qui est un fichier XML qui contient certains paramètres de l'application, est-ce une bonne idée de suivre le même schéma et qu'elle est la norme en PHP ?

    Bonne soirée.
    Exprimer une différence d'opinion vaut mieux que :

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Tu peux stocker tes paramètres de connexion dans un fichier php de configuration que tu charges ensuite dans ton application. Chaque environnement doit disposer de son propre fichier de configuration, que tu dois exclure de ton système de contrôle de version et de déploiement évidemment, afin que le fichier de développement n'écrase pas le fichier de production.

    Tu peux aussi utiliser d'autres formats (yaml, xml, ini...) mais franchement ça ne sert à rien, un simple fichier PHP le fait très bien.

    Sinon, tu as aussi la possibilité de les stocker dans des variables d'environnement, ce qui est surtout utile quand tu veux partager ces paramètres avec d'autres applications dans le serveur.

  3. #3
    Membre confirmé Avatar de Aizen64
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 561
    Points : 462
    Points
    462
    Par défaut
    L'écrire directement dans un fichier PHP au lieu d'un XML ou autre ?

    Si j'ai dans ce fichier de config. par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
        const CONNEXIONSTRING = "ma string de connexion";
    ?>
    Bien que la remarque peut paraitre stupide, il me semble avoir eu des soucis en faisant des include avec des fichiers contenant eux même des variables. Sans en être certain, j'ai du avoir des problèmes parce que les variables ou constantes définies par le script de destination n'étaient pas reconnues.
    Exprimer une différence d'opinion vaut mieux que :

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Je ne vois pas quel genre de problème ça peut avoir. Exemple de fichier config.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $config = [
        'db' =>['username' => 'bobby', 'password' => 'tables', 'dbname' => 'dev'],
        'email' => ['username' => 'dev.user', 'password'='dev.password'],
    ];
     
    return $config;
    Ensuite d'utilisation, par exemple dans une classe Config
    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
     
    class Config()
    {
        private $config;
     
        public function __construct($config_file)
       {
          $this->config = require_once($config_file);
        }
     
       public function getDbConfig()
       {
            return $this->config['db'];
       }
     
      public function getEmailConfig()
       {
            return $this->config['email'];
       }
    }
    Et utilisation, dans le code qui "boote" mon application, ou dans un conteneur de services si tu utilise un.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $config = new Config('/chemin/vers/config.php');
    et ensuite, pour récupérer par exemple les paramètres de base de données, tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $db_config = $config->getDbConfig();
    $username = $db_config['username'];
    $password = $db_config['password'];
    Ou, si tu ne fais pas de POO, tu peux simplement récupérer les paramètres dans une variable où que tu veux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $config = require_once('/chemin/vers/config.php');
    et tu peux ensuite utiliser le tableau $config, qui contient toutes tes données. Ça minimise les risques d'écrasement des variables existantes, puisque tu as une seule variable globale, $config, plutôt que de multiples variables qui viennent polluer ton code.

Discussions similaires

  1. stockage de sa connection string
    Par Arthis dans le forum ASP.NET
    Réponses: 2
    Dernier message: 09/09/2007, 11h41
  2. Réponses: 11
    Dernier message: 03/11/2005, 17h59
  3. Choix d'environnement de développement
    Par life is magic dans le forum x86 32-bits / 64-bits
    Réponses: 3
    Dernier message: 16/09/2005, 13h06
  4. Langage C / Linux / environnement de développement
    Par formatou dans le forum Choisir un environnement de développement
    Réponses: 20
    Dernier message: 09/10/2004, 15h44
  5. L'environnement de développement le plus utilisé
    Par TheDarkLewis dans le forum Windows
    Réponses: 5
    Dernier message: 16/09/2004, 20h08

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