Heim > Backend-Entwicklung > PHP-Tutorial > Ausführliche Erklärung, wie PHP-Sitzungen nach 30 Minuten zerstört werden (mit Codebeispielen)

Ausführliche Erklärung, wie PHP-Sitzungen nach 30 Minuten zerstört werden (mit Codebeispielen)

藏色散人
Freigeben: 2023-04-11 08:40:01
nach vorne
2102 Leute haben es durchsucht

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

Ausführliche Erklärung, wie PHP-Sitzungen nach 30 Minuten zerstört werden (mit Codebeispielen)

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.

Kurzes Beispiel

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(), &#39;&#39;, time() - 42000, $cookieParam["path"], $cookieParam["domain"], $cookieParam["secure"], $cookieParam["httponly"]);
}

// as a last step, destroy the session.
session_destroy();
Nach dem Login kopieren

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]

Über dieses Login-Beispiel session_destroy()

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.

Anmeldeseite mit Anmeldeformular

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=&#39;stylesheet&#39; href=&#39;style.css&#39; type=&#39;text/css&#39; />
<link rel=&#39;stylesheet&#39; href=&#39;form.css&#39; type=&#39;text/css&#39; />
</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[&#39;submit&#39;])) {
    $usernameRef = "admin";
    $passwordRef = "test";
    $username = $_POST[&#39;username&#39;];
    $password = $_POST[&#39;password&#39;];

    // 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[&#39;login-user&#39;] = $username;
        // login time is stored as reference
        $_SESSION[&#39;ref-time&#39;] = 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 &#39;last active time&#39;.
        // 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[&#39;expiry-time&#39;] = time() + ($expirtyMinutes * 60);
        // redirect to home
        // do not include home page, it should be a redirect
        header(&#39;Location: home.php&#39;);
    } else {
        echo "Wrong username or password. Try again!";
    }
}
?>
</div>
</body>
</html>
Nach dem Login kopieren

Dashboard authentifiziert die PHP-Anmeldesitzung und zeigt Anmelde- und Abmeldelinks an

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=&#39;stylesheet&#39; href=&#39;style.css&#39; type=&#39;text/css&#39; />
<link rel=&#39;stylesheet&#39; href=&#39;form.css&#39; type=&#39;text/css&#39; />
</head>
<body>
    <div class="phppot-container">
<?php
if (! isset($_SESSION[&#39;login-user&#39;])) {
    echo "Login again!<br><br>";
    echo "<a href=&#39;login.php&#39;>Login</a>";
} else {
    $currentTime = time();
    if ($currentTime > $_SESSION[&#39;expiry-time&#39;]) {
        require_once __DIR__ . &#39;/destroy-session.php&#39;;
        echo "Session expired!<br><br><a href=&#39;login.php&#39;>Login</a>";
    } else {
        ?>
        <h1>Welcome <?php echo $_SESSION[&#39;login-user&#39;];?>!</h1>
        <a href=&#39;logout.php&#39;>Log out</a>
<?php
    }
}
?>
</div>
</body>
</html>
Nach dem Login kopieren

Dieser PHP-Code ist für Benutzer gedacht, die sich vor Ablauf ihrer Sitzung abmelden möchten.

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__ . &#39;/destroy-session.php&#39;;
header(&#39;Location: login.php&#39;);
?>
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:juejin.im
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage