2010-08-01 9 views
6

Estoy trabajando con un archivo de configuración que he creado para almacenar usuarios. Esto seguramente no era para lo que las configuraciones estaban destinadas a ser utilizadas, pero es una aplicación extremadamente pequeña y creo que sería una buena solución.¿Escribir una matriz para configurar Codeigniter?

Mi matriz se ve así:

$config['users'] = array(array('username' => 'username', 'password' => 'password')); 

Esto funciona bien. Puedo recuperar la información de manera rápida y fácil. PERO, si trato de escribir una nueva matriz (un nuevo usuario) en el fichero de configuración me sale este error: Illegal offset tipo de isset o vacío

estoy usando $this->config->item('users', array('username' =>....)) que no aparece para apoyar matrices.

¿Cómo puedo escribir matrices en mi variable de configuración? ¿Hay otra manera?

EDITAR: Bien, el error se corrigió gracias a la respuesta dada por phirschy. Estaba tan seguro en mi cabeza que podría usar config-> item() que no revisé el manual para una configuración-> set_item() ... PERO, todavía no funciona. Aquí está el código específico:

 $users = $this->config->item('users'); 
     array_push($users, array('username' => $this->input->post('username'), 'password' => $this->input->post('password'))); 
     $this->config->set_item('users', json_encode($users)); 
     echo json_encode($users); 

Este código está llamada a través de Ajax, y tengo un cuadro de alerta para ver si los valores son correctos. Son. Y como pueden ver, he intentado almacenarlo como json en lugar de array también ... pero tampoco funciona. ¿Ayuda por favor?

gracias

+3

Cualquiera que sea el alcance de su aplicación, aun así sigo recomendando contra el uso de un archivo de configuración para almacenar los nombres de usuario y contraseñas. La seguridad es mucho más importante aquí que el tamaño. Dicho esto, si aún desea utilizar un archivo de configuración para esto, asegúrese de no guardar las contraseñas en texto sin formato y de establecer los permisos adecuados en su archivo de configuración. – BoltClock

+0

Lo haré, no te preocupes. :) También es en parte porque no tengo idea de cómo hacerlo de manera diferente. Puedo hacerlo con MySQL, pero nunca he trabajado con almacenamiento de archivos antes y no quiero involucrar un db. –

Respuesta

5

Tienes que utilizar el método 'set_item' para escribir un elemento de configuración, no 'elemento':

$this->config->set_item('item_name', 'item_value'); 

o en su caso:

$this->config->set_item('users', array(...)); 
+0

Tenías razón sobre la función, perdí el recuerdo.Pero todavía no funciona (agregué más detalles a la pregunta). –

0

Viejo pregunta, pero tuve una pregunta similar. Por lo tanto:

And as you can see, I've tried storing it as json instead of array as well.... but that doesn't work either.

que debería haber sido la primera cosa a la punta que fuera algo más que estaba mal - JSON es sólo una cadena. Si no fue capaz de almacenar eso, algo más estuvo mal. De hecho, su código es confuso y un poco sospechoso, usted está almacenando JSON (una cadena) pero está accediendo a él como si fuera una matriz (no json_decode en cualquier lugar).

De todos modos, me gustaría sugerir una prueba sencilla:

$this->config->set_item('the_array', array("I'm", "an", "array")); 
echo 'The config array: '.print_r($this->config->item('the_array'), true); 

terminé tratando esto mismo después de ver a su pregunta con una respuesta definitiva - funciona bien en CodeIgniter 1.7. Entonces, la respuesta es, sí, puede almacenar matrices como elementos de configuración. No se requiere codificación JSON.

Saludos

Cuestiones relacionadas