Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment créer un fichier de configuration globale ?

Chacun a ses propres préférences. Je préfère stocker mes paramètres de base de données dans un fichier .ini en dehors de la racine Web, puis lui attribuer une valeur chmod 0600, pour empêcher quiconque, sauf le propriétaire, de le lire.

Un exemple .ini ressemblera à :

[database]
driver = mysql
host = localhost
;port = 3306
schema = yourdbname
username = dbusername
password = some_pass

Ensuite, vous pouvez utiliser la fonction php parse_ini_file puis dans votre constructeur, vous venez de lire cela et de l'analyser dans un tableau :

public function __construct($file = 'dbsettings.ini')
{
    // @todo: change this path to be consistent with outside your webroot
    $file = '../' . $file;

    if (!$settings = parse_ini_file($file, TRUE)) throw new exception('Unable to open ' . $file . '.');

    $dns = $settings['database']['driver'] .
    ':host=' . $settings['database']['host'] .
    ((!empty($settings['database']['port'])) ? (';port=' . $settings['database']['port']) : '') .
    ';dbname=' . $settings['database']['schema'];

    // if not PDO, this part needs to be changed parent::__construct($dns, $settings['database']['username'], $settings['database']['password']);
}

Et alto, vous disposez d'un moyen simple et sécurisé pour configurer votre connexion à la base de données. Cette classe a été tirée d'une classe d'extension PDO, donc si vous n'utilisez pas PDO, vous devez modifier cette ligne, mais comme vous pouvez le voir, vous obtenez le nom d'utilisateur, etc. dans un $settings déployer.

J'éviterais FORTEMENT de stocker tout type d'informations de base de données dans un CONSTANT ou GLOBAL variable de type. De cette façon, les $settings n'est disponible que pour cette fonction de classe et rien d'autre, fournissant un peu plus de couche de sécurité.