sql >> Database >  >> RDS >> Mysql

Hoe maak je een globaal configuratiebestand aan?

Iedereen heeft zijn eigen voorkeuren. Ik geef er de voorkeur aan mijn DB-instellingen op te slaan in een .ini buiten de webroot en het dan een 0600 chmod-waarde te geven, om te voorkomen dat iemand anders dan de eigenaar het leest.

Een voorbeeld van een .ini ziet er als volgt uit:

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

Dan kun je de php-functie parse_ini_file gebruiken dan lees je dat in je constructor en parseer je het in een array:

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']);
}

En altviool, je hebt een eenvoudige en veilige manier om je databaseverbinding in te stellen. Deze klasse is afkomstig van een PDO-extenderklasse, dus als je geen PDO gebruikt, moet je die regel wijzigen, maar zoals je kunt zien krijg je de gebruikersnaam enz. in een $settings reeks.

Ik zou TEN ZEERSTE vermijden om elk type database-informatie op te slaan in een CONSTANT of GLOBAL variabele typen. Op deze manier worden de $settings is alleen beschikbaar voor die klassefunctie en niets anders, en biedt een extra stukje beveiligingslaag.



  1. Mysql - Alle tabellen en kolommen hernoemen naar kleine letters?

  2. Gepland onderhoud van de 24/7 IS-database in MS SQL Server

  3. Overeenkomende records uit twee tabellen

  4. WIDTH_BUCKET() Functie in Oracle