Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak stworzyć globalny plik konfiguracyjny?

Każdy ma swoje preferencje. Wolę przechowywać moje ustawienia bazy danych w pliku .ini poza webrootem, a następnie nadać mu wartość chmod 0600, aby uniemożliwić odczytanie jej przez nikogo poza właścicielem.

Przykładowy plik .ini będzie wyglądał następująco:

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

Następnie możesz użyć funkcji php parse_ini_file następnie w swoim konstruktorze po prostu wczytujesz to i analizujesz do tablicy:

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

I viola, masz prosty i bezpieczny sposób na skonfigurowanie połączenia z bazą danych. Ta klasa została zaczerpnięta z klasy PDO Extender, więc jeśli nie używasz PDO, musisz zmienić tę linię, ale jak widzisz, nazwę użytkownika itp. otrzymasz w $settings szyk.

BARDZO unikałbym przechowywania wszelkiego rodzaju informacji z bazy danych w CONSTANT lub GLOBAL typ zmiennej. W ten sposób $settings jest dostępny tylko dla tej funkcji klasy i nic więcej, zapewniając dodatkową warstwę bezpieczeństwa.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jedna tabela Mysql z wieloma kolumnami TIMESTAMP

  2. Dołącz do stołów z dwóch różnych serwerów

  3. Błąd kodowania Unicode Kodek „latin-1” nie może zakodować znaku „\u2019”

  4. Wykres drzewa rodowego/rodzinnego z bazy danych

  5. mysql z wartościami oddzielonymi przecinkami