Maison  >  Article  >  développement back-end  >  Explication détaillée de la façon dont les sessions PHP sont détruites après 30 minutes (avec exemples de code)

Explication détaillée de la façon dont les sessions PHP sont détruites après 30 minutes (avec exemples de code)

藏色散人
藏色散人avant
2022-11-14 16:34:512054parcourir

Cet article vous présentera la question de savoir comment détruire la session PHP à une heure spécifiée. Voici une introduction détaillée sur la façon de détruire la session via la fonction session_destroy(). J'espère que cela sera utile aux amis dans le besoin ~.

Explication détaillée de la façon dont les sessions PHP sont détruites après 30 minutes (avec exemples de code)

PHP a une fonction principale session_destroy() pour effacer toutes les valeurs de session. Il s'agit d'une fonction simple sans paramètres qui renvoie une valeur booléenne vraie ou fausse.

L'identifiant de session PHP est stocké dans un cookie par défaut. Généralement, le nom du fichier cookie de session est PHPSESSID. La fonction session_destroy n'annulera pas l'identifiant de session dans le cookie.

Afin de détruire "complètement" la session, l'ID de session doit également être désinitialisé.

Cet exemple rapide utilise session_destroy() pour détruire la session. Il utilise la méthode set_cookie() pour tuer toute la session avec un ID de session PHP expiré.

Exemple rapide

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();

Remarque : Utilisez session_start() pour redémarrer une session PHP après sa destruction. Utilisez PHP$_SESSION pour désactiver des variables de session spécifiques. Pour les anciennes versions de PHP, utilisez session_unset(). Sortie de destruction de session php [Apprentissage recommandé : Tutoriel vidéo PHP]

À propos de cet exemple de connexion session_destroy()

Créons un exemple de code de connexion pour utiliser la session PHP, session_destroy, etc. Il permet aux utilisateurs de se connecter et de se déconnecter de la session en cours. Si vous recherchez un enregistrement complet de l'utilisateur et une connexion dans un script PHP, utilisez ce code. Cet exemple fournit une fonctionnalité d’expiration automatique de la session de connexion.

Page de connexion avec formulaire de connexion

Ce formulaire affiche le nom d'utilisateur et le mot de passe saisis par l'utilisateur. Il vérifie les informations de connexion en PHP. Après une connexion réussie, il stocke le statut de connexion dans la session PHP. Il définit le délai d'expiration à 30 minutes à compter de la dernière heure de connexion. Il stocke la dernière heure de connexion et l'heure d'expiration dans la session PHP. Ces deux variables de session sont utilisées pour expirer automatiquement la session.

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>

Le tableau de bord authentifie la session de connexion PHP et affiche les liens de connexion et de déconnexion

Il s'agit de la page cible pour la redirection après la connexion. Si une session de connexion existe, elle affichera un lien de déconnexion. Une fois le délai écoulé, il appellera la session de destruction. code php pour détruire toutes les sessions. Si le délai d'expiration de 30 minutes est atteint ou si la session est vide, il demandera à l'utilisateur de se connecter.

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>

Ce code PHP est destiné aux utilisateurs qui souhaitent se déconnecter avant l'expiration de leur session.

Il détruit la session en demandant qu'elle soit détruite. code php. Il redirige ensuite l'utilisateur vers la page de connexion. logout.php

<?php
session_start();
require_once __DIR__ . &#39;/destroy-session.php&#39;;
header(&#39;Location: login.php&#39;);
?>

J'espère que cet exemple vous aidera à comprendre comment détruire une session PHP. Et c’est un scénario parfait pour expliquer la nécessité de détruire des sessions.

Cet article est réimprimé, adresse originale : https://juejin.cn/post/7164391542164520990

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer