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~
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.
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(), '', 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]
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.
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='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>
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='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>
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__ . '/destroy-session.php'; header('Location: login.php'); ?>
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!