Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Melaksanakan Tamat Tempoh Sesi PHP 30 Minit dengan Boleh Dipercayai?

Bagaimanakah Saya Boleh Melaksanakan Tamat Tempoh Sesi PHP 30 Minit dengan Boleh Dipercayai?

DDD
DDDasal
2024-12-20 11:41:08750semak imbas

How Can I Reliably Implement a 30-Minute PHP Session Expiration?

Melaksanakan Sesi PHP Tamat Tempoh Selepas 30 Minit

Pernyataan Masalah:

Mengekalkan sesi aktif selama 30 minit sebelum menamatkan ia.

Jawapan:

Bergantung semata-mata pada tetapan sesi terbina dalam PHP (cth., session.gc_maxlifetime, session.cookie_lifetime) mungkin tidak menjamin tamat tempoh sesi yang boleh dipercayai. Sebaliknya, adalah disyorkan untuk melaksanakan mekanisme tamat tempoh tersuai.

session.gc_maxlifetime:

  • Menentukan selang selepas data sesi dianggap "sampah" dan subjek untuk membersihkan.
  • Walau bagaimanapun, pemungut sampah tidak dijamin dapat dijalankan setiap kali sesi bermula, mengakibatkan kemungkinan kelewatan dalam pengalihan keluar data.
  • Selain itu, dengan pengendali sesi lalai, data sesi boleh dialih keluar berdasarkan cap masa pengubahsuaian fail, yang membawa kepada ketidakkonsistenan.

session.cookie_lifetime:

  • Mengawal tamat tempoh kuki sesi penyemak imbas, tetapi tidak mempengaruhi kesahihan sesi sebelah pelayan secara langsung.
  • Menetapkan nilai ini kepada sifar akan mencipta kuki sesi sebenar, tamat tempoh selepas penutupan penyemak imbas.

Pengendali Tamat Tempoh Tersuai:

Untuk memastikan tamat tempoh sesi yang boleh dipercayai, laksanakan pengendali tamat tempoh tersuai yang menggunakan cap masa untuk menjejak aktiviti pengguna.

Kod:

if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) {
    // Session inactive for over 30 minutes
    session_unset(); // Delete session data
    session_destroy(); // Terminate session
}
$_SESSION['LAST_ACTIVITY'] = time(); // Update timestamp

Pertimbangan Tambahan:

  • Tetapkan session.gc_maxlifetime kepada nilai yang sama atau lebih besar daripada selang tamat tempoh tersuai (mis., 1800 saat).
  • Untuk tamat tempoh sesi berdasarkan masa aktiviti (bukan masa mula), gunakan setcookie() untuk menetapkan tamat tempoh kuki 30 minit selepas permintaan terakhir.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Tamat Tempoh Sesi PHP 30 Minit dengan Boleh Dipercayai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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