sql >> Databáze >  >> RDS >> Mysql

Jak vytvořit globální konfigurační soubor?

Každý má své preference. Upřednostňuji ukládání nastavení DB do .ini mimo webroot a pak mu přiřazuji hodnotu 0600 chmod, abych zabránil tomu, aby je četl kdokoli kromě vlastníka.

Příklad .ini bude vypadat takto:

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

Pak můžete použít funkci php parse_ini_file pak si to ve svém konstruktoru přečtete a analyzujete do pole:

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

A violo, máte jednoduchý a bezpečný způsob, jak nastavit připojení k databázi. Tato třída byla převzata z třídy rozšíření PDO, takže pokud nepoužíváte PDO, musíte tento řádek změnit, ale jak vidíte, uživatelské jméno atd. získáte v $settings pole.

VELMI bych se vyhnul ukládání jakéhokoli typu databázových informací do CONSTANT nebo GLOBAL typ proměnné. Tímto způsobem $settings je k dispozici pouze pro tuto funkci třídy a pro nic jiného, ​​což poskytuje další kousek bezpečnostní vrstvy.



  1. Jak vložit soubory BLOB a CLOB do MySQL?

  2. Jak vytvořit cizí klíč v SQL Server (příklady T-SQL)

  3. Jak získat hodnoty ze sloupce MySQL(5.6), pokud obsahuje dokument json jako řetězec

  4. Jak mohu spustit a zkontrolovat svůj protokol MySQL?