詳解PHP對談如何實現在30分鐘後被銷燬(附程式碼範例)

2022-11-14 18:02:27
本文給大家介紹有關PHP對談如何指定時間銷燬的問題,下面就給大家詳細介紹如何通過session_destroy()這個函數來銷燬對談的,希望對需要的朋友有所幫助~

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對談銷燬輸出【推薦學習:】

關於此登入session_destory()範例

讓我們建立一個登入範例程式碼,以使用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登入對談並顯示登入和登出連結

這是登入後重定向的目標頁面。如果登入對談存在,它將顯示登出連結。 一旦超時,它將呼叫銷燬對談。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程式碼用於希望在對談到期前登出的使用者。

它通過要求銷燬對談來銷燬對談。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其它相關文章!