2010-08-01 9 views
6

Pracuję z plikiem konfiguracyjnym, który utworzyłem, aby przechowywać użytkowników. To na pewno nie było to, do czego konfiguracje były przeznaczone, ale jest to bardzo mała aplikacja i myślę, że byłoby to miłe rozwiązanie.Napisz tablicę do konfiguracji w Codeigniter?

Moja tablica wygląda następująco:

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

Działa to dobrze. Mogę odzyskać informacje szybko i łatwo. Ale, jeśli staram się napisać nową tablicę (Nowy użytkownik) do pliku konfiguracyjnego otrzymuję ten błąd: Nielegalne przesunięcie typu w isset lub pusty

Używam $this->config->item('users', array('username' =>....)) który nie wydaje się wspierać tablic.

Jak mogę napisać tablice do mojej zmiennej konfiguracyjnej? Czy istnieje inny sposób?

EDYCJA: W porządku, błąd został naprawiony dzięki odpowiedzi udzielonej przez phirschy. Byłem tak pewien w mojej głowie, że mogłem użyć config-> item(), że nie sprawdzałem instrukcji dla config-> set_item() ... ALE, nadal nie działa. Oto specyficzny kod:

 $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); 

Kod ten jest nazywany przez Ajax i mam powiadomienie pole, aby sprawdzić, czy wartości są prawidłowe. Oni są. I jak widać, próbowałem przechowywać go jako json zamiast tablicy również ... ale to też nie działa. Prosimy o pomoc?

dziękuję

+3

Cokolwiek zakres aplikacji, bym nadal odradzam pomocą pliku konfiguracyjnego do przechowywania nazw użytkowników i haseł. Bezpieczeństwo jest tutaj znacznie większym problemem niż rozmiar. To powiedziawszy, jeśli nadal chcesz użyć pliku konfiguracyjnego, po prostu upewnij się, że nie przechowujesz haseł w postaci zwykłego tekstu i ustawiłeś odpowiednie uprawnienia do pliku konfiguracyjnego. – BoltClock

+0

Będę, nie martw się. :) Częściowo dlatego, że nie mam pojęcia, jak to zrobić inaczej. Mogę to zrobić za pomocą MySQL, ale nigdy wcześniej nie pracowałem z pamięcią masową i nie chcę angażować bazy danych. –

Odpowiedz

5

Trzeba użyć 'set_item' metodę, aby napisać artykuł config, a nie 'przedmiot':

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

lub w przypadku:

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

Miałeś rację co do funkcji, źle pamiętałem.Ale nadal nie działa (dodałem więcej szczegółów do pytania). –

0

Stary pytanie, ale miałem podobne pytanie. A więc:

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

To powinno być pierwszą rzeczą, która sprawi, że coś innego będzie nie w porządku - JSON to tylko ciąg. Jeśli nie byłeś w stanie tego zapisać, coś innego było nie tak. Rzeczywiście twój kod jest mylący i nieco podejrzany, przechowujesz JSON (ciąg znaków), ale uzyskujesz do niego dostęp, tak jakby był to tablica (nigdzie nie ma json_decode).

W każdym razie, polecam prosty test:

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

skończyło się próbując to sobie po obejrzeniu pytanie o ostateczną odpowiedź - działa dobrze w CodeIgniter 1.7. Tak więc odpowiedź brzmi: tak, może przechowywać tablice jako elementy konfiguracji. Nie jest wymagane kodowanie JSON.

Cheers