Die Notwendigkeit, eine Sitzung für eine bestimmte Zeit am Leben zu erhalten und sie dann zu beenden ist in der Webentwicklung üblich. PHP bietet Optionen zum Festlegen von Sitzungszeitüberschreitungen, diese liefern jedoch möglicherweise nicht immer zuverlässige Ergebnisse. Lassen Sie uns die Mängel bestehender PHP-Mechanismen verstehen und eine zuverlässige Lösung erkunden.
PHP bietet zwei Optionen zum Festlegen der Sitzung timeouts:
Um eine zuverlässige einzurichten Sitzungszeitüberschreitung, implementieren Sie Ihre eigene Lösung. Dies kann durch die Pflege eines Zeitstempels erreicht werden, der die letzte Benutzeraktivität darstellt.
if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) { // Last request was more than 30 minutes ago session_unset(); // Unset $_SESSION variable session_destroy(); // Destroy session data in storage } $_SESSION['LAST_ACTIVITY'] = time(); // Update last activity timestamp
Da die Aktualisierung der Sitzungsdaten bei jeder Anfrage das Änderungsdatum der Sitzungsdatei ändert , wird der Garbage Collector die Sitzung nicht vorzeitig entfernen.
Für zusätzliche Sicherheit sollten Sie die Sitzungs-ID regelmäßig neu generieren Reduzieren Sie Session-Hijacking-Versuche:
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 and invalidate old one $_SESSION['CREATED'] = time(); // Update creation time }
Das obige ist der detaillierte Inhalt vonWie kann man den Ablauf einer PHP-Sitzung nach 30 Minuten zuverlässig verwalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!