2012-04-03 15 views
0

Ich bin nicht neu in CodeIgniter, aber ich bin auch kein Profi ... immer noch daran gewöhnt, nehme ich an. Ich bin gespannt, ob jemand Ideen hat, wie man eine Nachricht anzeigen kann, die besagt, dass eine Sitzung abgelaufen ist, wenn die Sitzungsbibliothek eine inaktive Sitzung beendet.Codeigniter Session Timeout Nachricht

Ich habe versucht, die Session.php Bibliothek erstreckt, und fügt hinzu:

// Is the session current? 
    if (($session['last_activity'] + $this->sess_expiration) < $this->now) 
    { 
     $this->sess_destroy(); 
     $this->set_flashdata('timeout_message', "Session Timed Out."); // <--added 
     return FALSE; 
    } 

Aber ich denke, wenn FALSE zurückgegeben und mein Controller leitet auf der Seite, die die Flash-Meldung angezeigt wird .. die Flash-Daten gelöscht.

Irgendwelche Ideen?

+1

Sie versuchen, eine Sitzungsfunktion zu verwenden, nachdem Sie es zerstört haben. –

+0

Hmm. Daran habe ich nicht gedacht. Sie denken, ich könnte verwenden: '$ this-> sess_create()' gefolgt von der Methode set_flashdata? – WhiskeyMike

+0

Probieren Sie es aus. Aber das vereitelt den Zweck, die Sitzung zu zerstören. –

Antwort

0

Ich denke, Sie sollten nur eine etwas andere Art und Weise gehen. Angenommen, Sie haben eine Art Hauptcontroller, von dem alles andere geerbt wird, um einige Grundlagen zu verwenden, dann könnten Sie eine Version der Methode hinzufügen, die Sie dazu haben. Jedes Mal, wenn ein Benutzer eine neue Seite anfordert, führen Sie einfach den obigen Check aus. Wenn dies fehlschlägt, können Sie die aktuelle Sitzung zerstören (oder eine Abmelde-Methode ausführen, wenn Sie eine haben), eine neue starten, die Flashdata-Nachricht festlegen und zurück zur Homepage oder wo auch immer Sie wollen. Dies wird natürlich eine neue Sitzung starten, aber sicher ist das in Ordnung, wenn der Benutzer ausgeloggt wurde und alle wertvollen Sitzungsdaten verloren gegangen sind?