Apakah mungkin untuk mengatur halaman kedaluwarsa di php?

Dalam contoh ini, kami akan berasumsi bahwa Anda ingin mengakhiri sesi pengguna setelah 30 menit tidak aktif

Sayangnya, dengan PHP, Anda harus mengakhiri sesi pengguna secara manual. Kami akan menjelaskan alasannya nanti. Untuk saat ini, mari kita lihat contoh kodenya

<?php

//Start our session.
session_start();

//Expire the session if user is inactive for 30
//minutes or more.
$expireAfter = 30;

//Check to see if our "last action" session
//variable has been set.
if(isset($_SESSION['last_action'])){
    
    //Figure out how many seconds have passed
    //since the user was last active.
    $secondsInactive = time() - $_SESSION['last_action'];
    
    //Convert our minutes into seconds.
    $expireAfterSeconds = $expireAfter * 60;
    
    //Check to see if they have been inactive for too long.
    if($secondsInactive >= $expireAfterSeconds){
        //User has been inactive for too long.
        //Kill their session.
        session_unset();
        session_destroy();
    }
    
}

//Assign the current timestamp as the user's
//latest activity
$_SESSION['last_action'] = time();

Telusuri cepat kode kedaluwarsa sesi di atas

  1. Kami memulai sesi kami dengan session_start(), seperti biasa. Ingat. Anda tidak dapat mengakses variabel sesi hingga sesi dimulai
  2. Untuk contoh ini, kami menetapkan batas kedaluwarsa menjadi 30 menit. Anda dapat mengubah angka ini menjadi 40 menit atau 60 menit jika diinginkan
  3. Menggunakan isset fungsi, kami memeriksa untuk melihat apakah ada variabel sesi yang disebut "last_action". Penting untuk memverifikasi bahwa variabel ini ada sebelum kami mencoba melakukan perhitungan apa pun padanya
  4. Di dalam pernyataan IF, kami menghitung jumlah detik yang telah berlalu sejak pengguna terakhir aktif. Untuk melakukan ini, kami mengurangi stempel waktu "last_action" dari stempel waktu saat ini
  5. Kami kemudian mengonversi variabel $expireAfter kami menjadi detik dengan mengalikannya dengan 60. Hal ini penting karena memungkinkan kami untuk membandingkan detik yang telah berlalu dengan jumlah detik maksimum yang diizinkan sebelum sesi berakhir.
  6. Kami kemudian membandingkan dua nilai. Jika $secondsInactive lebih besar dari atau sama dengan $expireAfterSeconds, pengguna sudah terlalu lama tidak aktif dan kami perlu mengambil tindakan
  7. JIKA pengguna sudah terlalu lama tidak aktif, kami menghapus sesi saat ini. Kami melakukan ini dengan memanggil fungsi session_unset dan session_destroy
  8. Terakhir, kami menyetel ulang variabel aktivitas terakhir dengan menetapkan stempel waktu saat ini

sidang. gc_maxlifetime tidak berfungsi

Beberapa dari Anda mungkin bertanya-tanya mengapa kami tidak merekomendasikan penggunaan session. gc_maxlifetime, yang merupakan opsi konfigurasi yang ada di dalam php. file ini

Soalnya, masalah dengan session. gc_maxlifetime adalah bahwa ia tidak melakukan apa yang "diharapkan" oleh sebagian besar pengembang PHP

Banyak pengembang menganggap bahwa ini adalah cara mudah untuk membuat PHP secara otomatis kedaluwarsa sesi setelah jangka waktu tertentu. Misalnya, mengaturnya ke…

;1800 seconds = 30 minutes
session.gc_maxlifetime = 1800
_

… harus secara otomatis kedaluwarsa semua sesi PHP setelah 30 menit, kan?

Sayangnya, bukan itu masalahnya. Opsi ini bergantung pada pengumpulan sampah PHP (itulah kepanjangan dari gc di gc_maxlifetime). Masalahnya adalah, pengumpulan sampah PHP memiliki peluang 1% untuk dipanggil, per permintaan (nilai default)

Ini berarti Anda tidak pernah dapat mengandalkannya untuk mengakhiri sesi pengguna secara otomatis

Singkatnya, jika Anda memiliki 100 pengguna yang tidak aktif selama lebih dari 30 menit, maka hanya satu dari mereka yang sesinya akan berakhir.

Artikel ini akan memperkenalkan metode untuk menghancurkan sesi di PHP menggunakan fungsi session_unset() dan session_destroy(). Kami akan menghancurkan sesi setelah 30 menit. Itu memeriksa interval waktu dari aktivitas terakhir hingga waktu saat ini untuk menghancurkan sesi

Kami juga akan mendemonstrasikan cara lain untuk menyetel batas waktu sesi di PHP menggunakan fungsi unset(). Fungsi unset() mengambil variabel sesi sebagai parameter. Metode ini menggunakan array untuk menyimpan variabel session

Kami akan memperkenalkan metode lain untuk membatalkan id sesi saat ini menggunakan fungsi session_regenerate_id(). Fungsi ini menghasilkan id sesi baru untuk sesi saat ini yang menghancurkan id sesi sebelumnya

Gunakan Fungsi session_unset() dan session_destroy() untuk Mengatur Batas Waktu Sesi di PHP

Kita dapat menggunakan fungsi session_unset() untuk menghapus variabel

#php 7.x
 'active', 'registered' => time())
if ((time() - $_SESSION['start']['registered']) > (60 * 30)) {
    unset($_SESSION['start']);
    echo "session destroyed";
}
$_SESSION['start'] = time();
?>
2 pada saat run-time dan menggunakan fungsi session_destroy() untuk menghancurkan sesi dari penyimpanan. Fungsi
#php 7.x
 'active', 'registered' => time())
if ((time() - $_SESSION['start']['registered']) > (60 * 30)) {
    unset($_SESSION['start']);
    echo "session destroyed";
}
$_SESSION['start'] = time();
?>
_4 mengembalikan waktu saat ini. Kita dapat menggunakan variabel
#php 7.x
 'active', 'registered' => time())
if ((time() - $_SESSION['start']['registered']) > (60 * 30)) {
    unset($_SESSION['start']);
    echo "session destroyed";
}
$_SESSION['start'] = time();
?>
2 untuk menyimpan stempel waktu aktivitas terakhir. Dengan demikian, kita dapat mengecek waktu dengan menghitung selisih dari aktivitas terakhir dengan waktu saat ini. Dengan cara ini, kami memeriksa interval waktu sesi

Misalnya, mulai sesi dengan fungsi session_destroy()_4. Tampilkan id sesi saat ini menggunakan fungsi session_destroy()4. Periksa apakah sesi telah dibuat dan buat sesi

#php 7.x
";
if (!isset($_SESSION['start'])) {
    $_SESSION['start'] = time();
} else if (time() - $_SESSION['start'] > 1800) {
    session_regenerate_id(true); 
    $_SESSION['start'] = time(); 
}
print("Now: ".session_id());
?>
6 dan tetapkan fungsi
#php 7.x
 'active', 'registered' => time())
if ((time() - $_SESSION['start']['registered']) > (60 * 30)) {
    unset($_SESSION['start']);
    echo "session destroyed";
}
$_SESSION['start'] = time();
?>
4. Temukan interval waktu sesi aktif seperti yang kami lakukan pada metode di atas. Jika kondisinya benar, gunakan fungsi session_destroy()9. Perbarui variabel sesi. Di akhir skrip, cetak id sesi baru dengan fungsi session_destroy()4

Bagaimana cara mengatur waktu kedaluwarsa di PHP?

Batas batas waktu sesi dapat diatur dengan mengatur nilai dua direktif di php. file ini atau menggunakan fungsi ini_set() dalam skrip PHP . Arahan diberikan di bawah ini. Ini digunakan untuk mengatur batas waktu dalam detik untuk menyimpan informasi sesi di server untuk waktu yang lama.

Bagaimana cara meningkatkan waktu kedaluwarsa sesi di PHP?

Jika Anda menggunakan penanganan sesi default PHP, satu-satunya cara untuk mengubah durasi sesi secara andal di semua platform adalah dengan mengubah php. ini . Itu karena di beberapa platform, pengumpulan sampah diimplementasikan melalui skrip yang dijalankan setiap waktu tertentu (skrip cron) yang dibaca langsung dari php.

Bagaimana cara mendapatkan batas waktu sesi di PHP?

Prosedur .
Masuk sebagai pengguna admin dengan kata sandi yang ditentukan untuk PORTAL. .
Klik Server > Jenis Server > Server Aplikasi WebSphere > Portal WebSphere
Klik Pengaturan Penampung > Pengelolaan sesi > Setel Waktu Tunggu
Masukkan nilai batas waktu yang diinginkan dalam hitungan menit
Klik Oke
Klik Simpan

Berapa lama batas waktu sesi dalam PHP?

Waktu tunggu sesi PHP bergantung pada konfigurasi server atau sesi arahan yang relevan. gc_maxlifetime di php. file ini. Biasanya batas waktu sesi PHP default adalah 24 menit (1440 detik) , tetapi host web Anda mungkin telah mengubah default ke yang lain.