Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich eine PHP-Sitzung nach 30 Minuten Inaktivität effektiv beenden?
Um eine Sitzung für eine bestimmte Zeit aufrechtzuerhalten und anschließend zu beenden, wird die Implementierung eines benutzerdefinierten Sitzungszeitlimits empfohlen. Dieser Ansatz ist zuverlässiger, als sich auf Sitzungseinstellungen wie session.gc_maxlifetime oder session.cookie_lifetime zu verlassen.
1. session.gc_maxlifetime:
session.gc_maxlifetime bestimmt die Zeitspanne, nach der Sitzungsdaten als „Müll“ betrachtet und entfernt werden. Die Speicherbereinigung erfolgt jedoch sporadisch, was sie zu einer unzuverlässigen Methode für den Sitzungsablauf macht.
2. session.cookie_lifetime:
session.cookie_lifetime beeinflusst nur die Lebensdauer des an den Browser gesendeten Cookies, nicht die Sitzung selbst. Der Server ist für die Ungültigmachung von Sitzungen verantwortlich, nicht der Client.
Empfohlene Lösung:
Implementieren Sie ein benutzerdefiniertes Sitzungs-Timeout, indem Sie einen Zeitstempel verwalten, der die letzte Aktivitätszeit verfolgt. Aktualisieren Sie diesen Zeitstempel bei jeder Anfrage.
if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) { // last request was more than 30 minutes ago session_unset(); // unset $_SESSION variable for the run-time session_destroy(); // destroy session data in storage } $_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp
Diese Methode lässt Sitzungsdaten effektiv nach 30 Minuten Aktivität ablaufen und verhindert eine vorzeitige Entfernung durch den Garbage Collector.
Für erhöhte Sicherheit sollten Sie eine regelmäßige Neugenerierung in Betracht ziehen die Sitzungs-ID, um eine Sitzungsfixierung zu verhindern Angriffe.
if (!isset($_SESSION['CREATED'])) { $_SESSION['CREATED'] = time(); } else if (time() - $_SESSION['CREATED'] > 1800) { // session started more than 30 minutes ago session_regenerate_id(true); // change session ID for the current session and invalidate old session ID $_SESSION['CREATED'] = time(); // update creation time }
Hinweise:
Das obige ist der detaillierte Inhalt vonWie kann ich eine PHP-Sitzung nach 30 Minuten Inaktivität effektiv beenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!