sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo crear un archivo de configuración global?

Todos tienen sus propias preferencias. Prefiero almacenar la configuración de mi base de datos en un .ini fuera de la raíz web y luego darle un valor de chmod 0600, para evitar que nadie más que el propietario lo lea.

Un ejemplo de .ini se verá así:

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

Luego puede usar la función php parse_ini_file luego, en su constructor, simplemente lea eso y lo analice en una matriz:

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

Y viola, tiene una forma simple y segura de configurar su conexión a la base de datos. Esta clase se tomó de una clase de extensión de PDO, por lo que si no está utilizando PDO, debe cambiar esa línea, pero como puede ver, obtiene el nombre de usuario, etc. en un $settings formación.

Evitaría encarecidamente almacenar cualquier tipo de información de la base de datos en un CONSTANT o GLOBAL variable tipo. De esta forma, la $settings solo está disponible para esa función de clase y nada más, lo que proporciona un poco más de capa de seguridad.