[Resuelto] Manera correcta de salvar el contenido de una variable

Iniciado por t4r0x, 4 Septiembre 2015, 01:30 AM

0 Miembros y 1 Visitante están viendo este tema.

t4r0x

Buenas veran mi problema es el siguiente estoy creando un sitio web, tengo un script php ( instalar.php ) que seria ejecutable para "instalar" el sitio web por ejemplo pidiendo al usuario el host, usuario y contraseña de mysql para crear una base de datos y demas, hasta ahi todo bien.

ahora mi pregunta principal es como seria la manera correcta o usual que la gente utiliza  para guardar por ejemplo el nombre del usuario y contraseña de mysql que fueron ingresados en instalar.php y asi usarlos en el resto de scripts de mi sitio web para acceder a mi base de datos que cree.

gracias de antemano!

0roch1

Lo que yo hago es guardar los datos de configuración en un archivo, por ejemplo ini, yaml o xml.

Si lo guardas en un archivo INI sería algo así.

config.ini
Código (ini) [Seleccionar]

[database]
host = localhost
user = usuario
pass = C0ntra$3nA
db = base_datos


Connection.php
Código (php-brief) [Seleccionar]

config = parse_ini_file('config.ini');
$connection = new mysqli($config['host'],$config['user'],$config['pass'],$config['db']);


Claro, primero debes hacer tu clase para crear el archivo de configuración.

Espero te sirva de ayuda.

Saludos.

t4r0x

#2
gracias eso se mira bien, solo tengo la duda es seguro mantener este tipo de informacion en texto plano, en la escuela que yo estaba nos dijeron que no era seguro mantener contraseñas en texto plano :P

engel lex

Cita de: t4r0x en  6 Septiembre 2015, 02:04 AM
gracias eso se mira bien, solo tengo la duda es seguro mantener este tipo de informacion en texto plano, en la escuela que yo estaba nos dijeron que no era seguro mantener contraseñas en texto plano :P

con las conexiones directas a base de datos, no hay muchas opciones, igual no se supone que accedan a allí, yo preferiría definirlo en un .php y hacerle include...
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

#!drvy

La putada de guardarlo en un INI o cualquier archivo de texto plano que se pueda mostrar simplemente al ser accedido es que si no lo proteges mediante el servidor httpd, lo puede leer cualquiera. Normalmente cualquier servidor HTTPD de producción te va a permitir negar el acceso a ciertos archivos o incluso carpetas. Eso sin embargo es un poco lio ya que te tienes que preocupar que cada cliente lo tenga bien configurado.

Lo mas sencillo es escribir la config en un .php ya que por defecto este no imprime nada si no tiene un echo. Yo hace tiempo me hice una pequeña función para hacer eso. Con la función creas/sobre-escribes un archivo con un array que le hayas pasado. Luego lo puedes incluir fácilmente.

Código (php) [Seleccionar]
<?php

function writeConfig($config=null$file='config.php'){
    if(!isset(
$config) || !is_array($config)){
        
trigger_error('Config is not an array.'E_USER_WARNING);
        return 
false;
    }

    
$config '<?php return '.var_export($configtrue).';';

    try { 
file_put_contents($file$configLOCK_EX); }
    catch(
Exception $e){
        
trigger_error($e->getMessageE_USER_WARNING);
        return 
false;
    }

    return 
true;
}


El funcionamiento es muy básico,  llamas a la función writeConfig indicandole el array que tiene que guardar y donde lo tiene que hacer (este ultimo es opcional, por defecto es 'config.php'). Luego solo tienes que declarar una variable incluyendo el archivo para obtener la configuración.

Ejemplo:

Código (php) [Seleccionar]
// Escribir la configuracion
$config_a = array('hola'=>'mundo');
writeConfig($config_a, 'hola.php');

// Obtener (y imprimir) la configuracion
$config_b = include 'hola.php';
print_r($config_b);


El resultado seria:
Código (output) [Seleccionar]
Array
(
   [hola] => mundo
)


y el archivo 'hola.php' contendría:
Código (php) [Seleccionar]
<?php return array (
  
'hola' => 'mundo',
);


Saludos

t4r0x

gracias por las repsuesta, ya tengo varias alternativas definitivamente, gracias #!drvy.