Heim >Backend-Entwicklung >PHP-Tutorial >Wie lässt sich eine PHP-Sitzung nach 30 Minuten Inaktivität zuverlässig beenden?
So lassen Sie eine PHP-Sitzung effektiv nach 30 Minuten ablaufen
Während PHP Optionen wie session.gc_maxlifetime und session.cookie_lifetime für den Sitzungsablauf bereitstellt, Sie sind nicht ganz zuverlässig. Hier ist ein umfassender Ansatz zur Implementierung Ihres eigenen Sitzungs-Timeout-Mechanismus.
Probleme mit den integrierten PHP-Optionen:
Implementieren eines benutzerdefinierten Sitzungs-Timeouts:
Der effektivste Weg, a Um eine Sitzung nach einer bestimmten Zeit der Inaktivität zu beenden, müssen Sie Ihren eigenen Timeout-Mechanismus implementieren. Dazu gehört die Pflege eines Zeitstempels der letzten Aktivität (Anfrage) und dessen Aktualisierung bei jeder Anfrage. Wenn die letzte Aktivität mehr als 30 Minuten zurückliegt, können Sie die Sitzung deaktivieren und zerstören.
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
Durch die kontinuierliche Aktualisierung der Sitzungsdaten verhindern Sie, dass das Änderungsdatum der Sitzungsdatei vorzeitig vom Garbage Collector entfernt wird.
Zusätzliche Sicherheitsmaßnahmen:
Um Angriffe wie Sitzungsfixierung zu verhindern, können Sie regelmäßig Generieren Sie die Sitzungs-ID neu, indem Sie den Zeitstempel $_SESSION['CREATED'] aktualisieren:
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 lässt sich eine PHP-Sitzung nach 30 Minuten Inaktivität zuverlässig beenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!