Batas waktu sesi php tidak berfungsi

Setelah pengguna tidak aktif dan lupa keluar dari halaman web, ini dapat menyebabkan masalah keamanan. Jadi, setelah browser ditutup, sesi PHP akan dimusnahkan, secara default

Di sini, Anda akan mempelajari cara memulai sesi dan cara memodifikasinya secara akurat menggunakan PHP

Sekarang, mari kita lihat cara memulai sesi menggunakan fungsi PHP

Jika Anda ingin memulai sesi dengan PHP, Anda dapat menggunakan fungsi session_start(). Sintaks yang digunakan adalah sebagai berikut

Setelah memulai sesi, Anda dapat membuat variabel sesi untuk digunakan di masa mendatang

Anda dapat membuatnya dan menyimpannya dalam variabel dengan bertindak seperti yang ditunjukkan di bawah ini

  • Hasilkan variabel sesi 'var1' dan berikan nilai 3 padanya
  • Tetapkan variabel ke sesi

$username="Michael";
$_SESSION['username']=$username;

Setelah membuat sesi dan variabelnya, Anda dapat menghapusnya

Jika Anda ingin menghapus sesi tertentu, Anda dapat menjalankan perintah ini

Untuk menghancurkan sesi sepenuhnya, Anda dapat bertindak seperti ini

Bayangkan, ada halaman login dan tombol "Login". Setelah mengklik tombol itu, sesi dimulai, dan variabel ditetapkan. Variabel sesi untuk menyimpan periode login diatur. Kemudian, itu diarahkan ke beranda pengguna

Mari kita lihat contoh tindakan di halaman login

Untuk menjaga sesi di halaman beranda, Anda harus memanggil fungsi session_start(). Ini memungkinkan mendapatkan variabel sesi dari halaman. Untuk menghitung waktu saat ini, Anda dapat menggunakan fungsi time(). Penting untuk dicatat bahwa perbedaan antara variabel sesi yang dihasilkan pada saat login dan waktu saat ini tidak boleh melebihi batas waktu yang diinginkan. Setelah durasi melebihi, sesi akan dimusnahkan. Akibatnya, halaman tersebut akan dialihkan ke halaman login

Untuk persepsi yang lebih baik tentang apa yang terjadi di beranda, lihat contoh di bawah ini

Fungsi PHP ini digunakan untuk memulai sesi baru atau melanjutkan sesi yang sudah ada. Setelah session_start dijalankan, PHP memanggil penangan penyimpanan sesi buka dan baca. Itu bisa berupa save handler bawaan, yang disediakan secara default atau dengan ekstensi PHP

The manual probably doesn't stress this enough:_

** This has nothing to do with lifetime of a session **

Whatever you set this setting to, it won't change how long sessions live on your server.

This only changes HTTP cache expiration time (Expires: and Cache-Control: max-age headers), which advise browser for how long it can keep pages cached in user's cache without having to reload them from the server.

Sesi adalah cara untuk menyimpan informasi (dalam variabel) untuk digunakan di beberapa Permintaan HTTP, untuk mensimulasikan "keadaan" di seluruh navigasi halaman

Tidak seperti cookie, informasi tidak disimpan di komputer pengguna akhir tetapi di server aplikasi

Untuk alasan keamanan, sesi memiliki batas waktu untuk ada daripada kedaluwarsa. PHP memiliki batas waktu tunggu default dan terkadang ini bukan batas waktu yang dibutuhkan aplikasi Anda. Dalam posting ini kita akan belajar bagaimana mengubah Timeout Sesi PHP

Berapa lama batas waktu sesi PHP

Batas waktu sesi PHP tergantung pada konfigurasi server atau arahan yang relevan session.gc_maxlifetime dalam file php.ini

Biasanya batas waktu sesi PHP default adalah 24 menit (1440 detik), tetapi host web Anda mungkin telah mengubah default ke yang lain

Apa batas waktu sesi yang wajar?

OWASP, salah satu organisasi standar keamanan aplikasi web paling otoritatif, mengatakan tentang waktu tunggu sesi

“Kedaluwarsa sesi yang tidak mencukupi oleh aplikasi web meningkatkan paparan serangan berbasis sesi lainnya, karena agar penyerang dapat menggunakan kembali ID sesi yang valid dan membajak sesi terkait, itu harus tetap aktif. Semakin pendek interval sesi, semakin sedikit waktu penyerang harus menggunakan ID sesi yang valid. Nilai batas waktu kedaluwarsa sesi harus ditetapkan sesuai dengan tujuan dan sifat aplikasi web, serta menyeimbangkan keamanan dan kegunaan, sehingga pengguna dapat dengan nyaman menyelesaikan operasi dalam aplikasi web tanpa sesinya sering kedaluwarsa...Rentang waktu tunggu tidak aktif yang umum adalah 2 . ”

Dari perspektif pedoman federal, draf NIST 800-63B – Pedoman Identitas Digital mengusulkan rekomendasi berikut untuk memberikan kepercayaan tinggi untuk autentikasi. “Autentikasi ulang pelanggan AKAN diulang setelah tidak lebih dari 30 menit pengguna tidak aktif. ”

Jadi sesi Anda tidak boleh lebih dari 30 menit. Baca pertimbangan batas waktu Sesi di artikel ini

Menyetel Batas Waktu Sesi PHP

Batas waktu sesi dalam PHP dikonfigurasi menggunakan dua arahan dalam file php.ini

  • sidang. gc_maxlifetime. Ini digunakan untuk mengatur batas waktu dalam detik untuk menyimpan informasi sesi di server untuk waktu yang lama

  • sidang. cookie_lifetime. Ini digunakan untuk mengatur batas waktu kedaluwarsa untuk cookie PHPSESSID

Cara lain untuk menyetel batas waktu sesi PHP adalah dengan menggunakan fungsi ini_set() dalam skrip PHP

Menggunakan php. pengaturan ini untuk batas waktu sesi

Temukan arahan session.gc_maxlifetime dan pilih sekecil mungkin. session.gc_maxlifetime_ adalah pengaturan untuk menghapus ID sesi usang. Ketergantungan pada pengaturan ini tidak disarankan. Pengembang harus mengelola sesi seumur hidup dengan stempel waktu sendiri

Ini menentukan jumlah detik setelah data akan dilihat sebagai 'sampah' dan berpotensi dibersihkan. Pengumpulan sampah dapat terjadi selama sesi dimulai (tergantung pada session.gc_probability dan

Session is created for PHPSESSID.
0). Default ke 1440 (24 menit)

Temukan arahan

Session is created for PHPSESSID.
_1 dan setel ke
Session is created for PHPSESSID.
2 (nol). Nilai ini memiliki arti tertentu. Ini menginformasikan browser untuk tidak menyimpan cookie ke penyimpanan permanen. Oleh karena itu, saat browser dihentikan, cookie ID sesi segera dihapus. Jika pengembang menyetel ini selain 0, pengguna lain dapat menggunakan ID sesi. Sebagian besar aplikasi harus menggunakan "0" untuk ini

Jika fitur masuk otomatis diperlukan, pengembang harus menerapkan fitur masuk otomatis aman mereka sendiri. Jangan gunakan ID sesi umur panjang untuk ini

Menggunakan arahan ini_set untuk menyetel batas waktu sesi

Anda dapat mengatur session.gc_maxlifetime dan

Session is created for PHPSESSID.
1 menggunakan fungsi
Session is created for PHPSESSID.
5

Untuk ini, di awal skrip Anda, panggil fungsi yang meneruskan arahan dan nilai yang diinginkan untuk menyetelnya

Lihat contoh berikut

<?php

//Set the session timeout for 2 seconds
$timeout = 2;

//Set the maxlifetime of the session
ini_set( "session.gc_maxlifetime", $timeout );

//Set the cookie lifetime of the session
ini_set( "session.cookie_lifetime", $timeout );

//Start a new session
session_start();

//Set the default session name
$s_name = session_name();

//Check the session exists or not
if(isset( $_COOKIE[ $s_name ] )) {
    setcookie( $s_name, $_COOKIE[ $s_name ], time() + $timeout, '/' );

    echo "Session is created for $s_name.<br/>";
} else {
    echo "Session is expired.<br/>";
}
?>
_

Output berikut akan muncul setelah menjalankan skrip di atas untuk pertama kalinya

Session is created for PHPSESSID.
_

Dan menjalankannya lagi setelah 2 detik hasilnya akan menjadi

Session is expired.
_

Kesimpulan

Batas waktu sesi yang tepat untuk aplikasi PHP dapat dikonfigurasi menggunakan file php.ini global atau dengan skrip, yang memberi pengembang lebih banyak kontrol tentang berapa lama sesi harus berlangsung

Bagaimana cara mengatur batas waktu dalam sesi PHP?

if(time() - $_SESSION['login_time'] >= 1800){ session_destroy(); . 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 . }

Bagaimana cara mengatasi masalah batas waktu sesi?

Menerapkan setelan default di browser web Anda dapat mengatasi masalah tersebut. .
Buka menu Alat
Pilih Opsi Internet
Pilih tab Umum
Klik tombol Pulihkan ke Default
Klik Oke
Coba masuk lagi untuk melihat apakah masalah teratasi

Berapa lama batas waktu sesi dalam PHP?

Biasanya waktu tunggu sesi PHP default adalah 24 menit (1440 detik) , tetapi host web Anda mungkin telah mengubah default ke yang lain.

Apa batas waktu sesi PHP default?

Default ke 1440 (24 menit) .