2012-04-12 14 views
0

Der Browser hat erfolgreich einmal einen Cookie (wie? Wann? Ich kann wirklich nicht sagen. Ich kann nur sagen, dass zu einer bestimmten Zeit, erkannte ich, dass meine Website nicht war funktioniert mehr in Chrom). Jetzt zeigt chrome im Entwicklungstool weiterhin: "Diese Seite hat keine Cookies".CodeIgniter: Sitzung funktioniert nicht in Google Chrome

Es funktioniert im Explorer/Firefox/Safari, etc ...

Da CI Sitzung Bibliothek verwenden Cookies und alle meine Seiten die Session-Bibliothek verwenden, muss ich wirklich, dies zu beheben.

Hier ist meine config (Datenbanktabelle vorhanden ist, funktioniert und normalerweise Cookie verschlüsselt ist)

$config['sess_cookie_name']  = '[mydomain]sessions'; 
$config['sess_expiration']  = 60*60*24*7; // one week 
$config['sess_expire_on_close'] = FALSE; 
$config['sess_encrypt_cookie'] = FALSE; 
$config['sess_use_database'] = TRUE; 
$config['sess_table_name']  = '[mydomain]sessions'; 
$config['sess_match_ip']  = TRUE; 
$config['sess_match_useragent'] = FALSE; 
$config['sess_time_to_update'] = 300; 

Hier Cookie Config

$config['cookie_prefix'] = ""; 
$config['cookie_domain'] = "[mydomain.com]"; 
$config['cookie_path']  = "/"; 
$config['cookie_secure'] = FALSE; 

Wenn Benutzer anmeldet, es tut:

$query = $this->db->get_where('user', array('id' => $logged_in_user_id)); 
$row = $query->row(); 
$this->session->set_userdata('user_id', $row->user_id); 
redirect(base_url(), 'location'); 

Wenn sich der Benutzer abmeldet, geschieht Folgendes:

$this->session->sess_destroy(); 
redirect(base_url(), 'location'); 

Dies ist einfach und ich denke, das ist die Art, wie es gemacht werden sollte? Irgendeine Idee, warum es nicht in Chrom funktioniert, aber funktioniert perfekt in Firefox/Explorer/Safari?

+0

Sie haben sess_use_database auf true festgelegt, so dass Ihre Sitzung über die Datenbank nicht durch Cookies verwaltet wird –

Antwort

1

Versuchen Sie, einen Punkt auf dieser Linie hinzufügen:

$config['cookie_domain'] = ".[mydomain.com]"; 

Meine Konfiguration ist die gleiche und es funktioniert mit Google Chrome, aber ich habe diese hier anders:

$config['sess_expiration']  = 86400; 
$config['sess_encrypt_cookie'] = TRUE; 
$config['sess_match_ip']  = FALSE; 
$config['sess_match_useragent'] = TRUE; 

ich es funktioniert hoffen: -)

+0

Danke für den Vorschlag jonaypelluz. Ich habe es versucht und es hat nicht funktioniert. Ich habe cookie_domain leer gelassen und jetzt funktioniert es. Der Browser hat den Domain-Namen richtig eingestellt. Es sieht so aus, als müsste es vom Browser gehandhabt werden ...? – Simmoniz

0

Normalerweise habe ich (gut in der Vergangenheit habe ich) lösen (d) es durch die Verlängerung der Sitzung Ablauf, aber ich sehe, ist Ihr bereits auf eine Woche festgelegt. Versuchen Sie es kürzer zu machen? Zum Beispiel:

$config['sess_expiration'] = 8600; 

Alternativ können Sie verschlüsseln Cookie versuchen ausgeschaltet, wie ich auf dem CI-Foren jemand gerade gelesen habe sonst das Problem durch diese Methode behoben ist:

$config['sess_encrypt_cookie'] = FALSE; 

Hoffe, dass ich geholfen . Lassen Sie mich wissen, wie es für Sie geht :)

0

Fügen Sie ob_start() auf Sitzungsbibliothek hinzu.

ob_start(); 
$this->load->library('Session'); 

Und füge ob_clean() in Ihrer Sitzung zu zerstören Teil

$this->load->driver('cache'); 
$this->session->sess_destroy(); 
$this->cache->clean(); 
ob_clean(); 
0

zu Config gehen Und gerade diese ersetzen, wenn Sie auf lokales System verwenden:

$config['cookie_prefix'] = 'your_prefix'; 
$config['cookie_domain'] = 'localhost'; 
$config['cookie_path']  = '/folder_name/'; 
$config['cookie_secure'] = FALSE; 
$config['cookie_httponly'] = FALSE; 

Oder wenn Sie es verwenden auf dem Server ersetzen Sie es einfach wie folgt:

$config['cookie_domain'] = 'localhost'; 
to 
$config['cookie_domain'] = '.localhost'; 

hoffentlich wird es dir helfen.

Verwandte Themen