Dieser Artikel stellt Ihnen vor, wie Sie die PHP-Sitzung zu einem bestimmten Zeitpunkt zerstören können. Hier finden Sie eine detaillierte Einführung, wie Sie die Sitzung mithilfe der Funktion „session_destroy()“ zerstören können
PHP verfügt über eine Kernfunktion session_destroy() zum Löschen aller Sitzungswerte. Es handelt sich um eine einfache Funktion ohne Parameter, die den booleschen Wert „true“ oder „false“ zurückgibt.
Die Sitzungs-ID von PHP wird standardmäßig in einem Cookie gespeichert. Im Allgemeinen lautet der Name der Sitzungscookie-Datei PHPSESSID. Die Funktion „session_destroy“ löscht die Sitzungs-ID im Cookie nicht.
Um die Sitzung „komplett“ zu zerstören, muss auch die Sitzungs-ID gelöscht werden.
Dieses kurze Beispiel verwendet session_destroy(), um die Sitzung zu zerstören. Es verwendet die Methode set_cookie(), um die gesamte Sitzung mit einer abgelaufenen PHP-Sitzungs-ID zu beenden.
destroy-session.php
<?php // Always remember to initialize the session, // even before attempting to destroy it. // Destroy all the session variables. $_SESSION = array(); // delete the session cookie also to destroy the session if (ini_get("session.use_cookies")) { $cookieParam = session_get_cookie_params(); setcookie(session_name(), '', time() - 42000, $cookieParam["path"], $cookieParam["domain"], $cookieParam["secure"], $cookieParam["httponly"]); } // as a last step, destroy the session. session_destroy();
Hinweis: Verwenden Sie session_start(), um eine PHP-Sitzung neu zu starten, nachdem sie zerstört wurde. Verwenden Sie PHP$_SESSION, um bestimmte Sitzungsvariablen zu deaktivieren. Verwenden Sie für ältere PHP-Versionen session_unset(). PHP-Sitzungszerstörungsausgabe [Empfohlenes Lernen: PHP-Video-Tutorial]
Lassen Sie uns einen Login-Beispielcode erstellen, um PHP-Sitzung, session_destroy usw. zu verwenden. Es ermöglicht Benutzern, sich in der aktuellen Sitzung anzumelden und abzumelden. Wenn Sie eine vollständige Benutzerregistrierung und Anmeldung im PHP-Skript suchen, verwenden Sie diesen Code. Dieses Beispiel bietet eine automatische Ablauffunktion für Anmeldesitzungen.
Dieses Formular veröffentlicht den vom Benutzer eingegebenen Benutzernamen und das Passwort. Es überprüft Anmeldeinformationen in PHP. Nach einer erfolgreichen Anmeldung speichert es den Anmeldestatus in der PHP-Sitzung. Es legt die Ablaufzeit auf 30 Minuten ab dem letzten Anmeldezeitpunkt fest. Es speichert die letzte Anmeldezeit und die Ablaufzeit in der PHP-Sitzung. Diese beiden Sitzungsvariablen werden verwendet, um die Sitzung automatisch ablaufen zu lassen.
login.php
<?php session_start(); $expirtyMinutes = 1; ?> <html> <head> <title>PHP Session Destroy after 30 Minutes</title> <link rel='stylesheet' href='style.css' type='text/css' /> <link rel='stylesheet' href='form.css' type='text/css' /> </head> <body> <div class="phppot-container"> <h1>Login</h1> <form name="login-form" method="post"> <table> <tr> <td>Username</td> <td><input type="text" name="username"></td> </tr> <tr> <td>Password</td> <td><input type="password" name="password"></td> </tr> <tr> <td><input type="submit" value="Sign in" name="submit"></td> </tr> </table> </form> <?php if (isset($_POST['submit'])) { $usernameRef = "admin"; $passwordRef = "test"; $username = $_POST['username']; $password = $_POST['password']; // here in this example code focus is session destroy / expiry only // refer for registration and login code https://phppot.com/php/user-registration-in-php-with-login-form-with-mysql-and-code-download/ if ($usernameRef == $username && $passwordRef == $password) { $_SESSION['login-user'] = $username; // login time is stored as reference $_SESSION['ref-time'] = time(); // Storing the logged in time. // Expiring session in 30 minutes from the login time. // See this is 30 minutes from login time. It is not 'last active time'. // If you want to expire after last active time, then this time needs // to be updated after every use of the system. // you can adjust $expirtyMinutes as per your need // for testing this code, change it to 1, so that the session // will expire in one minute // set the expiry time and $_SESSION['expiry-time'] = time() + ($expirtyMinutes * 60); // redirect to home // do not include home page, it should be a redirect header('Location: home.php'); } else { echo "Wrong username or password. Try again!"; } } ?> </div> </body> </html>
Dies ist die Zielseite für die Umleitung nach der Anmeldung. Wenn eine Anmeldesitzung vorhanden ist, wird ein Abmeldelink angezeigt. Sobald das Zeitlimit überschritten ist, wird die Zerstörungssitzung aufgerufen. PHP-Code zum Zerstören aller Sitzungen. Wenn die Ablaufzeit von 30 Minuten erreicht ist oder die Sitzung leer ist, wird der Benutzer aufgefordert, sich anzumelden.
home.php
<?php session_start(); ?> <html> <head> <title>PHP Session Destroy after 30 Minutes</title> <link rel='stylesheet' href='style.css' type='text/css' /> <link rel='stylesheet' href='form.css' type='text/css' /> </head> <body> <div class="phppot-container"> <?php if (! isset($_SESSION['login-user'])) { echo "Login again!<br><br>"; echo "<a href='login.php'>Login</a>"; } else { $currentTime = time(); if ($currentTime > $_SESSION['expiry-time']) { require_once __DIR__ . '/destroy-session.php'; echo "Session expired!<br><br><a href='login.php'>Login</a>"; } else { ?> <h1>Welcome <?php echo $_SESSION['login-user'];?>!</h1> <a href='logout.php'>Log out</a> <?php } } ?> </div> </body> </html>
Es zerstört die Sitzung, indem es darum bittet, sie zu zerstören. PHP-Code. Anschließend wird der Benutzer zur Anmeldeseite weitergeleitet. logout.php
<?php session_start(); require_once __DIR__ . '/destroy-session.php'; header('Location: login.php'); ?>
Ich hoffe, dieses Beispiel hilft beim Verständnis, wie man eine PHP-Sitzung zerstört. Und dies ist ein perfektes Szenario, um die Notwendigkeit zu erklären, Sitzungen zu zerstören.
Dieser Artikel wurde nachgedruckt, Originaladresse: https://juejin.cn/post/7164391542164520990
Das obige ist der detaillierte Inhalt vonAusführliche Erklärung, wie PHP-Sitzungen nach 30 Minuten zerstört werden (mit Codebeispielen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!