2016-12-16 2 views
0

Ich möchte den inaktiven Benutzer nach 5 Minuten abmelden.Inaktiven Benutzer zum Abmelden erzwingen

ich diesen Code bin mit den Benutzeraktivitäten

if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 7)) { 
    // last request was more than 30 minutes ago 
    session_unset();  // unset $_SESSION variable for the run-time 
    session_destroy(); // destroy session data in storage 
    header('Location: ../index.php'); 
    exit; 
} 
$_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp 

aber das Problem zu verfolgen, wenn die Zeit aus ist es nicht die Sitzung zerstört und leitet ihn, wenn der Benutzer öffnen oder aktualisieren Sie die Seite

Ich möchte ihn automatisch abmelden

Wie kann ich das erreichen?

Antwort

1

Da es keine Interaktion mit dem Server gibt, bis der Benutzer die Seite neu lädt, muss alles, was Sie hier tun, in Javascript sein. Wenn ich es wäre, würde ich regelmäßig einen AJAX-Aufruf an den Server machen, um zu sehen, ob die Sitzung abgelaufen ist, und sie dann, wenn sie ein Timeout sieht, auf eine andere Seite umleiten. Beachten Sie, dass Sie Kopfzeileninformationen hinzufügen müssen, um die Seite im Cache zu stoppen, sodass der Benutzer die Zurück-Schaltfläche nicht drücken kann (wenn Sie wirklich verhindern möchten, dass die alten Daten angezeigt werden).

Für IE müssen Sie setzen eine ganze Menge das Caching zu stoppen, .. hier ist die Menge der Sachen, die ich eher als Header in PHP

header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 
header('Last-Modified: ' .gmdate("D, d M Y H:i:s") .' GMT'); 
header('Cache-Control: no-cache, must-revalidate'); 
header('Pragma: no-cache'); 
+0

Danke zu senden. Ich denke, es gibt einen Weg ohne Ajax zu benutzen. Danke für den Tipp – jack

+0

Sie könnten einen einfachen Timer in Javascript ausführen, um AJAX zu vermeiden, aber Sie können natürlich viel mehr Feinheiten implementieren, wenn Sie zurück auf den Server verweisen –