php入門到就業線上直播課:進入學習
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API偵錯工具:
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對談、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分鐘後被銷燬(附程式碼範例)的詳細內容,更多請關注TW511.COM其它相關文章!