Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Penjelasan terperinci tentang cara sesi PHP dimusnahkan selepas 30 minit (dengan contoh kod)

Penjelasan terperinci tentang cara sesi PHP dimusnahkan selepas 30 minit (dengan contoh kod)

藏色散人
藏色散人ke hadapan
2022-11-14 16:34:512055semak imbas

Artikel ini akan memperkenalkan kepada anda cara memusnahkan sesi PHP pada masa yang ditetapkan Berikut adalah pengenalan terperinci tentang cara memusnahkan sesi melalui fungsi session_destroy() Saya harap ia akan membantu rakan-rakan yang memerlukan~

Penjelasan terperinci tentang cara sesi PHP dimusnahkan selepas 30 minit (dengan contoh kod)

PHP mempunyai fungsi teras session_destroy() untuk mengosongkan semua nilai sesi. Ia adalah fungsi mudah tanpa parameter yang mengembalikan nilai boolean benar atau salah.

ID sesi PHP disimpan dalam kuki secara lalai. Secara amnya, nama fail kuki sesi ialah PHPSESSID. Fungsi session_destroy tidak akan membatalkan sessionid dalam kuki.

Untuk "memusnahkan sepenuhnya" sesi, ID sesi juga mesti dinyahtetapkan.

Contoh pantas ini menggunakan session_destroy() untuk memusnahkan sesi. Ia menggunakan kaedah set_cookie() untuk mematikan keseluruhan sesi dengan ID sesi PHP yang telah tamat tempoh.

Contoh Pantas

sesi-musnah.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();

Nota: Gunakan session_start() untuk memulakan semula sesi PHP selepas ia dimusnahkan. Gunakan PHP$_SESSION untuk menyahset pembolehubah sesi tertentu. Untuk versi PHP yang lebih lama, gunakan session_unset(). output pemusnahan sesi php [Pembelajaran yang disyorkan: Tutorial video PHP]

Mengenai contoh session_destory() log masuk ini

Mari kami cipta kod contoh log masuk untuk menggunakan sesi PHP, session_destroy dll. Ia membolehkan pengguna log masuk dan keluar dari sesi semasa. Jika anda sedang mencari pendaftaran pengguna yang lengkap dan log masuk dalam skrip PHP kemudian gunakan kod ini. Sampel ini menyediakan fungsi tamat tempoh sesi log masuk automatik.

Halaman log masuk dengan borang log masuk

Borang ini menyiarkan nama pengguna dan kata laluan yang dimasukkan oleh pengguna. Ia mengesahkan kelayakan log masuk dalam PHP. Selepas log masuk berjaya, ia menyimpan status log masuk ke dalam sesi PHP. Ia menetapkan masa tamat tempoh kepada 30 minit dari masa log masuk terakhir. Ia menyimpan masa log masuk terakhir dan masa tamat ke dalam sesi PHP. Kedua-dua pembolehubah sesi ini digunakan untuk tamat tempoh sesi secara automatik.

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>

Papan pemuka mengesahkan sesi log masuk PHP dan memaparkan pautan log masuk dan log keluar

Ini ialah halaman sasaran untuk ubah hala selepas log masuk. Jika sesi log masuk wujud, ia akan memaparkan pautan log keluar. Setelah tamat tempoh ia akan memanggil sesi musnah. php untuk memusnahkan semua sesi. Jika masa tamat tempoh 30 minit dicapai atau sesi kosong, ia akan meminta pengguna untuk log masuk.

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>

Kod PHP ini adalah untuk pengguna yang ingin log keluar sebelum sesi mereka tamat tempoh.

Ia memusnahkan sesi dengan meminta ia dimusnahkan. kod php. Ia kemudiannya mengalihkan pengguna ke halaman log masuk. logout.php

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

Saya harap contoh ini membantu memahami cara memusnahkan sesi PHP. Dan, ini adalah senario yang sempurna untuk menjelaskan keperluan untuk memusnahkan sesi.

Artikel ini dicetak semula, alamat asal: https://juejin.cn/post/7164391542164520990

Atas ialah kandungan terperinci Penjelasan terperinci tentang cara sesi PHP dimusnahkan selepas 30 minit (dengan contoh kod). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:juejin.im. Jika ada pelanggaran, sila hubungi admin@php.cn Padam