本文要為大家介紹PHP會話如何指定時間銷毀的問題,以下就給大家詳細介紹如何透過session_destroy()這個函數來銷毀會話的,希望對需要的朋友有所幫助~
#PHP有一個核心函數session_destroy()來清除所有會話值。它是一個簡單的沒有參數的函數,傳回一個布林值true或false。
PHP的會話ID預設儲存在一個cookie中。一般來說,該會話cookie檔案的名字是PHPSESSID。 session_destroy函數不會取消cookie中的sessionid。
為了 "完全 "銷毀會話,會話ID也必須被取消設定。
這個快速的範例使用session_destroy()來銷毀會話。它使用set_cookie()方法,透過過期的PHP會話ID來殺死整個會話。
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();
註: 使用session_start()在PHP會話銷毀後重新啟動會話。 使用PHP$_SESSION取消設定特定的會話變數。對於較舊的PHP版本,請使用session_unset()。 php會話銷毀輸出【推薦學習:PHP影片教學】
讓我們建立一個登入範例程式碼,以使用PHP會話、 session_destroy等。它允許用戶從當前會話登入和登出。如果您在PHP腳本中尋找完整的使用者註冊和登錄,請使用此程式碼。 此範例提供了自動登入會話到期功能。
此表單發佈使用者輸入的使用者名稱和密碼。它驗證PHP中的登入憑證。 成功登入後,它將登入狀態儲存到PHP會話。它將過期時間設定為從上次登入時間起30分鐘。 它將上次登入時間和到期時間儲存到PHP會話。這兩個會話變數用於使會話自動過期。
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>
這是登入後重新導向的目標頁面。如果登入會話存在,它將顯示註銷連結。 一旦超時,它將呼叫銷毀會話。 php程式碼來銷毀所有會話。 如果達到30分鐘到期時間或會話為空,它會要求使用者登入。
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>
它透過要求銷毀會話來銷毀會話。 php代碼。然後,它將使用者重新導向到登入頁面。 logout.php
<?php session_start(); require_once __DIR__ . '/destroy-session.php'; header('Location: login.php'); ?>
我希望這個範例有助於理解如何銷毀PHP會話。而且,這是一個完美的場景,適合解釋銷毀會話的必要性。
本文系轉載,原文網址:https://juejin.cn/post/7164391542164520990
以上是詳解PHP會話如何實現在30分鐘後被銷毀(附程式碼實例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!