Automatischer Logout nach bestimmter Zeit in PHP oder JavaScript mit Restzeitanzeige und Logout-Meldung umsetzen

Antwort vom

Für automatischen Logout mit Restzeitanzeige ist **PHP + JavaScript zusammen** die saubere Lösung: - **PHP**: prüft die Session serverseitig und beendet sie nach Inaktivität. - **JavaScript**: zeigt die verbleibende Zeit live im Browser an und leitet beim Ablauf um oder zeigt eine Meldung. ## 1. Serverseitig in PHP Beispiel mit **15 Minuten Inaktivität**: ```php <?php session_start(); $timeout = 900; // 15 Minuten in Sekunden if (isset($_SESSION['last_activity'])) { $inactive = time() - $_SESSION['last_activity']; if ($inactive >= $timeout) { session_unset(); session_destroy(); header("Location: logout.php?reason=timeout"); exit; } } $_SESSION['last_activity'] = time(); $_SESSION['expires_at'] = time() + $timeout; ``` Das kommt an den Anfang jeder geschützten Seite. --- ## 2. Restzeit mit JavaScript anzeigen PHP gibt den Ablaufzeitpunkt an JS weiter: ```php <?php session_start(); $timeout = 900; $_SESSION['expires_at'] = time() + $timeout; > <!DOCTYPE html> <html lang="de"> <head> <meta charset="UTF-8"> <title>Session Timeout</title> </head> <body> <div> Automatischer Logout in <span id="countdown"></span> </div> <script> const expiresAt = <?php echo $_SESSION['expires_at']; > * 1000; const countdownEl = document.getElementById('countdown'); function updateCountdown() { const now = Date.now(); let diff = Math.max(0, Math.floor((expiresAt - now) / 1000)); const minutes = Math.floor(diff / 60); const seconds = diff % 60; countdownEl.textContent = String(minutes).padStart(2, '0') + ':' + String(seconds).padStart(2, '0'); if (diff <= 0) { clearInterval(timer); alert('Du wurdest wegen Inaktivität ausgeloggt.'); window.location.href = 'logout.php?reason=timeout'; } } updateCountdown(); const timer = setInterval(updateCountdown, 1000); </script> </body> </html> ``` --- ## 3. Logout-Seite mit Meldung ```php <?php session_start(); session_unset(); session_destroy(); $reason = $_GET['reason'] ? ''; > <!DOCTYPE html> <html lang="de"> <head> <meta charset="UTF-8"> <title>Ausgeloggt</title> </head> <body> <?php if ($reason === 'timeout'): > <p>Du wurdest automatisch wegen Inaktivität ausgeloggt.</p> <?php else: > <p>Du wurdest ausgeloggt.</p> <?php endif; > </body> </html> ``` --- ## 4. Wichtiger Hinweis **Nur JavaScript allein reicht nicht sicher aus**, weil der Nutzer JS stoppen oder manipulieren kann. **Nur PHP allein** zeigt keine Live-Restzeit an. Darum: **PHP für Sicherheit, JavaScript für Anzeige**. ## 5. Besserer Ansatz Statt auf jeder Seite `expires_at` neu zu setzen, sollte die Restzeit auf echter Aktivität basieren, z. B. bei: - Mausbewegung - Tastatur - Klick - Request an den Server per Fetch/AJAX Dann bleibt die Session bei echter Nutzung aktiv. ## 6. Kurzfazit **Empfehlung:** - Session-Timeout in PHP - Countdown in JavaScript - Redirect + Meldung auf `logout.php` Das ist die übliche und robuste Umsetzung.

Kategorie: Technologie Tags: PHP JavaScript Logout

Verwandte Fragen

Wie nutzt man npm in JavaScript?

npm ist der Paketmanager für Node.js. Damit installierst und verwaltest du Bibliotheken für JavaScript-Projekte. Einfaches Beispiel: 1. Projekt starten: bash npm init -y 2. Paket install...

ZIP-Unterstützung in PHP aktivieren

Die ZIP-Unterstützung in PHP aktivierst du über die Erweiterung zip bzw. php-zip. Linux (Debian/Ubuntu): bash sudo apt install php-zip sudo systemctl restart apache2 Bei PHP-FPM stattdesse...

Unterstützt meine PHP-Installation ZIP?

Prüfe in PHP, ob die ZIP-Erweiterung verfügbar ist: php <?php if (classexists('ZipArchive')) { echo 'ZIP wird unterstützt'; } else { echo 'ZIP wird nicht...

Regex in PHP: Wie lassen sich auf der Seite die ArtNr mit EF- und die Anzahl direkt vor „Stk“ extrahieren?

Für diese Seite passt in PHP z. B. dieses Regex: php \b(EF-[A-Z0-9-]+)\b.?\b(\d+)\sStk\s+sofort\bi Gruppe 1 = ArtNr, z. B. EF-7310-S Gruppe 2 = Anzahl, z. B. 16 (servietten-wimmel.de) Beispiel...

Kann ich mit PHP 8 ein ZUGFeRD-XML-Dokument einlesen und die Infos verarbeiten?

Ja. Mit PHP 8 kannst du ein ZUGFeRD-XML-Dokument einlesen und die enthaltenen Informationen verarbeiten, z. B. mit: SimpleXML DOMDocument XMLReader Typisch ist: 1. XML-Datei laden 2. Namespaces beac...