Berapa lama variabel sesi php bertahan?

Cara alternatif untuk membuat data dapat diakses di berbagai halaman di seluruh situs web adalah dengan menggunakan Sesi PHP

Sesi membuat file dalam direktori sementara di server tempat variabel sesi terdaftar dan nilainya disimpan. Data ini akan tersedia untuk semua halaman di situs selama kunjungan tersebut

Lokasi file sementara ditentukan oleh pengaturan di php. file ini bernama session. save_path. Sebelum menggunakan variabel sesi apa pun, pastikan Anda telah menyiapkan jalur ini

Ketika sesi dimulai hal-hal berikut terjadi −

  • PHP pertama-tama membuat pengidentifikasi unik untuk sesi tertentu yang merupakan string acak dari 32 angka heksadesimal seperti 3c7foj34c3jj973hjkop2fc937e3443

  • Cookie yang disebut PHPSESSID secara otomatis dikirim ke komputer pengguna untuk menyimpan string identifikasi sesi yang unik

  • Sebuah file secara otomatis dibuat di server dalam direktori sementara yang ditentukan dan menyandang nama pengidentifikasi unik yang diawali dengan sess_ yaitu sess_3c7foj34c3jj973hjkop2fc937e3443

Ketika skrip PHP ingin mengambil nilai dari variabel sesi, PHP secara otomatis mendapatkan string pengidentifikasi sesi unik dari cookie PHPSESSID dan kemudian mencari di direktori sementara untuk file yang memuat nama itu dan validasi dapat dilakukan dengan membandingkan kedua nilai

Sesi berakhir ketika pengguna kehilangan browser atau setelah meninggalkan situs, server akan menghentikan sesi setelah jangka waktu yang telah ditentukan, umumnya durasi 30 menit

Memulai Sesi PHP

Sesi PHP dengan mudah dimulai dengan melakukan panggilan ke fungsi session_start(). Fungsi ini pertama-tama memeriksa apakah sesi sudah dimulai dan jika tidak ada yang dimulai maka akan dimulai. Direkomendasikan untuk memanggil session_start() di awal halaman

Variabel sesi disimpan dalam array asosiatif yang disebut $_SESSION[]. Variabel-variabel ini dapat diakses selama masa sesi

Contoh berikut memulai sesi lalu mendaftarkan variabel yang disebut penghitung yang bertambah setiap kali halaman dikunjungi selama sesi

Manfaatkan fungsi isset() untuk memeriksa apakah variabel sesi sudah disetel atau belum

Uji kode ini. php dan muat file ini berkali-kali untuk melihat hasilnya −



   
   
      Setting up a PHP session
   
   
   
      
   
   

Ini akan menghasilkan hasil berikut -

You have visited this page 1in this session.
_

Menghancurkan Sesi PHP

Sesi PHP dapat dihancurkan oleh fungsi session_destroy(). Fungsi ini tidak memerlukan argumen apa pun dan satu panggilan dapat menghancurkan semua variabel sesi. Jika Anda ingin menghancurkan satu variabel sesi maka Anda dapat menggunakan fungsi unset() untuk menghapus variabel sesi

Berikut adalah contoh untuk menghapus satu variabel −

Inilah panggilan yang akan menghancurkan semua variabel sesi −

Mengaktifkan Sesi Otomatis

Anda tidak perlu memanggil fungsi start_session() untuk memulai sesi saat pengguna mengunjungi situs Anda jika Anda dapat menyetel sesi. variabel auto_start ke 1 di php. file ini

Mungkin ada kasus ketika pengguna tidak mengizinkan untuk menyimpan cookie di mesin mereka. Jadi ada metode lain untuk mengirimkan ID sesi ke browser

Alternatifnya, Anda dapat menggunakan SID konstan yang ditentukan jika sesi dimulai. Jika klien tidak mengirimkan cookie sesi yang sesuai, itu memiliki bentuk session_name=session_id. Jika tidak, itu mengembang menjadi string kosong. Dengan demikian, Anda dapat menyematkannya tanpa syarat ke dalam URL

Contoh berikut menunjukkan cara mendaftarkan variabel, dan cara menautkan dengan benar ke halaman lain menggunakan SID

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.

Berapa lama sesi PHP valid?

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.

Bagaimana variabel sesi dihancurkan di PHP?

Sesi PHP dapat dihancurkan oleh fungsi session_destroy() . Fungsi ini tidak memerlukan argumen apa pun dan satu panggilan dapat menghancurkan semua variabel sesi. Jika Anda ingin menghancurkan satu variabel sesi maka Anda dapat menggunakan fungsi unset() untuk menghapus variabel sesi.

Bagaimana cara meningkatkan waktu kedaluwarsa sesi di PHP?

Jawaban Anda . header("Lokasi. keluar. php"); die(); // //redirect jika halaman tidak aktif selama 30 menit } else { $_SESSION['login_time'] = time(); // perbarui 'login_time' ke terakhir kali halaman berisi ini . }

Berapa lama sesi disimpan?

Objek sessionStorage menyimpan data hanya untuk satu sesi . (Data dihapus saat browser ditutup).