La class di sessione CodeIgniter non funziona in Chrome

Ho creato un sistema di login nel progetto codeigniter, che funziona perfettamente in Firefox ma non funziona in Chrome, recupera dati e impostato per la sessione ma quando questo codice reindirizza il controllo ad admin / dashboard, controlliamo nuovamente i dati di sessione. Se i dati di sessione non esistono, il codice reindirizzerà l’utente per accedere nuovamente ………… Il mio codice è sotto, e non so cosa c’è di sbagliato in questa sessione / cookie in codeigniter.?

$data = array( 'user_id' => $user->id, 'name' => $user->name, 'user_type' => $user->type, 'username' => $user->username, 'is_logged_in' => true ); $this->session->set_userdata($data); //echo "user ".$this->session->userdata("username"); exit; redirect("admin/dashboard", "location"); 

Ho molta ricerca ma nessuno lavora in questa situazione, come un cambiamento ” cookie_domain ” nel file di configurazione ma non è successo niente ….

Ho anche affrontato questa situazione e l’ho risolta aumentando la scadenza della sessione a un giorno.

AGGIORNARE

Perché funziona estendendo la scadenza della sessione?

Questo problema si verifica a causa della differenza tra i fusi orari dell’utente e la posizione del server Web, ad esempio, vivo in Pakistan, che è 10 ore avanti rispetto al fuso orario degli Stati Uniti e il mio server è negli Stati Uniti. Richiedo la pagina al 17/10/2012 14:00 in Pakistan. Il tempo negli Stati Uniti è il 17/10/2012 alle 4:00 dal momento che il server Web è in USA e la scadenza della sessione è impostata su 2 ore, il cookie inviato dal server è impostato per scadere il 17/10/2012 alle 06:00. Ora il browser interagisce con l’ora locale del PC e ottiene l’ora 17/10/2012 14:00 quindi cancella il cookie o il tuo cookie viene sempre aggiornato sulla tua richiesta. Pertanto è meglio impostare la scadenza della sessione a 1 giorno perché la differenza più grande nel fuso orario è di 17 ore tra la Nuova Zelanda e gli Stati Uniti (non sono sicuro che la differenza potrebbe essere che ho torto). Quindi il tuo biscotto rimarrà almeno in vita per 7 ore

solo per aggiungere la mia esperienza, sto usando Codeigniter 2.1.4,

Problema: le sessioni su Chrome non duravano più di un paio di minuti o venivano disconnesse mentre si effettuavano richieste Ajax. Ho provato diversi approcci: (cambiato sess_cookie_name, tempo sess_expiration più lungo).

Ho appena scoperto che l’impostazione sess_encrypt_cookie su FALSE ha risolto il problema del logout di Chrome.

$config['sess_encrypt_cookie'] = FALSE;

Non so perché, forse il problema della lunghezza dei cookie su Chrome (per quanto ne so la crittografia aumenta molto di una lunghezza della stringa).

So che la crittografia aggiunge un ulteriore livello di sicurezza, ma per quanto ho letto, i dati memorizzati nel cookie non sono sensibili.

Spero che sia d’aiuto!

Ho cambiato il parametro sess_match_useragent in falso nel config.php

 $config['sess_match_useragent'] = FALSE; 

E il problema con google chrome è stato risolto.

Hai controllato che stai memorizzando la sessione per un tempo più lungo e non viene distrutta in anticipo. Oppure potrebbe essere che abbia a che fare con le impostazioni di Chrome per accettare i dati di sessione e cookie in quanto non esiste un codice in codeigniter che funzioni su Firefox e non funzionerà su chrome.Anche assicurati di caricare automaticamente la tua libreria ‘sessione’.

risposta perfetta di Shayan Husaini Ho avuto lo stesso problema e l’ho risolto cambiando

 $config['sess_expiration'] = 8600; 

che è secondi in 24 ore, erano secondi in 2 ore

 $config['sess_expiration'] = 7200; 

Vivo in Pakistan e uso server degli USA, quindi questo problema si presenta.

Grazie Shayan è stato di grande aiuto.

Ho riscontrato lo stesso problema e alla fine riesco a risolverlo aggiornando la tabella del database delle sessioni con la struttura sql dell’ultima versione di Codeigniter in questo momento, versione 2.1.4.

  CREATE TABLE IF NOT EXISTS `ci_sessions` ( session_id varchar(40) DEFAULT '0' NOT NULL, ip_address varchar(45) DEFAULT '0' NOT NULL, user_agent varchar(120) NOT NULL, last_activity int(10) unsigned DEFAULT 0 NOT NULL, user_data text NOT NULL, PRIMARY KEY (session_id), KEY `last_activity_idx` (`last_activity`) ); 

Si noti inoltre che se sono configurati più database in config / database.php, la tabella di sessione utilizza la tabella di sessione del database di configurazione predefinito.

Risolto, CodeIgniter ha qualche problema se il dominio specificato per i cookie è localhost, ho impostato un dominio falso con la struttura del nome di un vero dominio nel file hosts e funziona.

So che questa è una risposta tardiva, ma se stai cercando una buona soluzione qui è: utilizzare questo codice come codice di disconnessione:

 $this->session->sess_destroy(); 

Ciò assicurerà la rimozione della sessione “ci_session”, che è il motivo principale per cui non è ansible salvare una nuova sessione, sperare che aiuti