Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah Saya Boleh Tamat Tempoh Sesi PHP Dengan Berkesan Selepas 30 Minit Tidak Beraktif?

Bagaimanakah Saya Boleh Tamat Tempoh Sesi PHP Dengan Berkesan Selepas 30 Minit Tidak Beraktif?

Mary-Kate Olsen
Lepaskan: 2024-12-23 11:23:12
asal
703 orang telah melayarinya

How Can I Effectively Expire a PHP Session After 30 Minutes of Inactivity?

Tamat tempoh Sesi PHP selepas 30 Minit

Untuk mengekalkan sesi untuk tempoh masa tertentu dan menamatkannya selepas itu, melaksanakan tamat masa sesi tersuai adalah disyorkan. Pendekatan ini lebih dipercayai daripada bergantung pada tetapan sesi seperti session.gc_maxlifetime atau session.cookie_lifetime.

1. session.gc_maxlifetime:

session.gc_maxlifetime menentukan jumlah masa selepas itu data sesi dianggap 'sampah' dan dialih keluar. Walau bagaimanapun, kutipan sampah berlaku secara sporadis, menjadikannya kaedah yang tidak boleh dipercayai untuk tamat tempoh sesi.

2. session.cookie_lifetime:

session.cookie_lifetime hanya mempengaruhi jangka hayat kuki yang dihantar ke penyemak imbas, bukan sesi itu sendiri. Pelayan bertanggungjawab untuk membatalkan sesi, bukan pelanggan.

Penyelesaian Disyorkan:

Laksanakan tamat masa sesi tersuai dengan mengekalkan cap masa yang menjejaki masa aktiviti terakhir. Kemas kini cap masa ini dengan setiap permintaan.

if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) {
    // last request was more than 30 minutes ago
    session_unset();     // unset $_SESSION variable for the run-time 
    session_destroy();   // destroy session data in storage
}
$_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp
Salin selepas log masuk

Kaedah ini tamat tempoh data sesi dengan berkesan selepas 30 minit aktiviti dan menghalang penyingkiran pramatang oleh pemungut sampah.

Untuk keselamatan yang dipertingkatkan, pertimbangkan untuk menjana semula secara berkala ID sesi untuk mengelakkan penetapan sesi serangan.

if (!isset($_SESSION['CREATED'])) {
    $_SESSION['CREATED'] = time();
} else if (time() - $_SESSION['CREATED'] > 1800) {
    // session started more than 30 minutes ago
    session_regenerate_id(true);    // change session ID for the current session and invalidate old session ID
    $_SESSION['CREATED'] = time();  // update creation time
}
Salin selepas log masuk

Nota:

  1. Tetapkan session.gc_maxlifetime sekurang-kurangnya selagi pengendali tamat tempoh tersuai.
  2. Untuk sesi tamat tempoh berdasarkan aktiviti dan bukannya permulaan sesi, tetapkan masa tamat tempoh kuki menggunakan setcookie kepada 30 minit.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Tamat Tempoh Sesi PHP Dengan Berkesan Selepas 30 Minit Tidak Beraktif?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan