2015-05-06 18 views
10

Sto usando la nuova versione (3.0.0). di CodeIgniter e ho un nuovo problema, le mie sessioni non funzionano. Voglio dire, il codice nel controller è corretto perché non ci sono errori ma, quando provo a stampare una variabile PHP in una vista, non c'è nulla.Come posso impostare una sessione nel database codeigniter 3?

Ho controllato la mia tabella nel server MySQL e niente, non ho ora quale è il problema. Ho inserito il mio codice di config.php. (Non capisco un sacco di cose in questa nuova versione)

$config['sess_table_name']    = 'ci_sessions'; 
$config['sess_driver']    = 'database'; 
$config['sess_cookie_name']    = 'ci_session'; 
$config['sess_expiration']   = 7200; 
$config['sess_save_path']    = NULL; 
$config['sess_match_ip']    = FALSE; 
$config['sess_time_to_update']  = 300; 
$config['sess_regenerate_destroy'] = FALSE; 

devo aggiungere la prima linea di "fare" sessioni di lavori, non so se questa configurazione è corretta per rendere le sessioni in un database.

Se qualcuno ha lo stesso problema, help me please :(. La mia classe Session non è stato modificato.

+0

http://www.codeigniter.com/userguide2/libraries/sessions.html loro vedere questo argomento Salvataggio sessione dati in un database –

risposta

26

Prima di tutto CI3 session table e CI2 tabella di sessione (Saving Session Data to a Database) struttura è diversa

Nuova tabella sessione structure

CREATE TABLE IF NOT EXISTS `ci_sessions` (
    `id` varchar(40) NOT NULL, 
    `ip_address` varchar(45) NOT NULL, 
    `timestamp` int(10) unsigned DEFAULT 0 NOT NULL, 
    `data` blob NOT NULL, 
    PRIMARY KEY (id), 
    KEY `ci_sessions_timestamp` (`timestamp`) 
); 

Seconda Supportano old configuration variables con new configuration, ma è meglio usare nuova configurazione

$config['sess_driver'] = 'database'; 
$config['sess_cookie_name'] = 'ci_sessions'; 
$config['sess_expiration'] = 7200; 
$config['sess_save_path'] = 'ci_sessions';//its your table name name 
$config['sess_match_ip'] = FALSE; 
$config['sess_time_to_update'] = 300; 

Vedere ulteriori dettagli nel loro

Pochi nuove funzionalità (funzione) disponibili per la libreria di sessione.

Ricorda Non dimenticarlo per caricare tramite autoload.php o caricare $this->load->library('session'); prima di utilizzarlo.

+0

Ooooh grazie bro, stavo usando l'altro tavolo, ci proverò. Grazie mille –

+0

Io cambio la tabella delle sessioni, ma il mio problema continua, Se non specifco $ config ['sess_table_name'] \t \t = 'ci_sessions'; MySQL inviami un errore di database perchè l'aggiornamento della sessione non ha una tabella di destinazione. :( –

+1

Puoi usarne una. $ config ['sess_save_path'] 'contiene il nome della tabella.Non usare entrambi. –

0

Se è stato aggiunto il "prima linea" (vale a dire sess_table_name) per farlo funzionare, è perché il vostro sess_driver valore è impostato su banca dati Date un'occhiata alla list of supported drivers e vedrete che per le sessioni basati su file, questo verrà impostato a che In altre parole, se si rimuove queste righe, dovrebbe funzionare:..

$config['sess_table_name']   = 'ci_sessions'; 
$config['sess_driver']    = 'database'; 
+0

provo con quella prima, ma io ottenuto un errore del database: UPDATE SET 'last_activity' = 1430946843,' user_data' = 'a: 2: {s: 9: \ "user_data La tabella non è stabilita come puoi vedere, se elimino la prima riga, la query da inserire non funziona :( –

0

Rimuovere la riga aggiunta e impostare:

$config['sess_save_path'] = 'ci_sessions'; 

Il resto del codice deve essere ok. Link to docs.

+0

Ci provo prima, ma ho ricevuto un errore del database: UPDATE SET last_activity = 1430946843, user_data = 'a: 2: {s: 9: \ "dati utente... La tabella non è stabilita come puoi vedere, se elimino la prima riga, la query da inserire non funziona :( –

0

Prova questo:

$config['sess_save_path'] = sys_get_temp_dir();