Sesi PHP Hancurkan setelah 30 menit

Programming

Oleh Vinci terakhir diubah pada 6 September 2022.

PHP memiliki fungsi session_destroy() utama untuk menghapus semua nilai sesi. Ini adalah fungsi sederhana tanpa argumen yang mengembalikan nilai boolean benar atau salah.

ID sesi PHP disimpan dalam cookie secara default. Biasanya cookie sesi itu disebut PHPSESSID. Fungsi session_destroy tidak menghapus ID sesi dalam cookie.

Untuk mematikan sesi “sepenuhnya”, ID sesi juga harus disetel.

Contoh cepat ini menggunakan session_destroy() untuk menghancurkan sesi. Ia menggunakan metode set_cookie() untuk menghancurkan cookie ketika ID sesi PHP kedaluwarsa.

Contoh cepat

shkatërro-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();

Catatan:

  1. Gunakan session_start() untuk memulai kembali sesi setelah menghancurkan sesi PHP.
  2. Gunakan PHP $_SESSION untuk menghapus variabel sesi tertentu. Untuk versi PHP yang lebih lama, gunakan session_unset().

Sesi php menghancurkan output

Dalam contoh ini login session_destroy().

Mari kita buat contoh kode login menggunakan sesi PHP, session_destroy dan semuanya. Ini memungkinkan pengguna untuk masuk dan keluar dari sesi saat ini. Jika Anda mencari pendaftaran pengguna lengkap dan login dalam skrip PHP, gunakan kode ini.

Contoh ini menyediakan fitur kedaluwarsa sesi login otomatis.

Halaman arahan dengan formulir login

Formulir ini mengirimkan nama pengguna dan kata sandi yang dimasukkan oleh pengguna. Memvalidasi kredensial login di PHP.

Jika login berhasil, itu menyimpan status login dalam sesi PHP. Menyetel waktu kedaluwarsa menjadi 30 menit dari waktu login terakhir.

Menyimpan waktu masuk terakhir dan waktu kedaluwarsa dalam sesi PHP. Kedua variabel sesi ini digunakan untuk mengakhiri sesi secara otomatis.

login.php

<?php
session_start();
$expirtyMinutes = 1;
?>
<html>
<head>
<title>PHP Session Destroy after 30 Minutes</title>
<link rel="stylesheet" href="https://phppot.com/php/php-session-destroy/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>

Memasuki

Dasbor memvalidasi sesi login PHP dan menampilkan link login dan logout

Ini adalah halaman arahan yang Anda akan diarahkan setelah login. Jika ada sesi login, itu menunjukkan link logout.

Setelah batas waktu, kode memanggil kill-session.php untuk mematikan semua sesi.

Jika batas waktu 30 menit berakhir atau sesi kosong, pengguna akan diminta untuk masuk.

home.php

<?php
session_start();
?>
<html>
<head>
<title>PHP Session Destroy after 30 Minutes</title>
<link rel="stylesheet" href="https://phppot.com/php/php-session-destroy/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>

Kode PHP ini digunakan untuk pengguna yang ingin logout sebelum sesi berakhir.

Ini mematikan sesi dengan meminta kode kill-session.php. Kemudian mengarahkan pengguna ke halaman login.

logout.php

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

Saya harap contoh ini membantu untuk memahami cara menghancurkan sesi PHP. Dan juga, ini adalah skenario yang sempurna untuk menjelaskan perlunya menghancurkan sesi.
Unduh

Kembali ke atas


Source link

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan.