Cara Tamat Tempoh Sesi PHP dengan Berkesan selepas 30 Minit
Walaupun PHP menyediakan pilihan seperti session.gc_maxlifetime dan session.cookie_lifetime untuk tamat tempoh sesi, mereka tidak boleh dipercayai sepenuhnya. Berikut ialah pendekatan komprehensif untuk melaksanakan mekanisme tamat masa sesi anda sendiri.
Isu dengan Pilihan Terbina Dalam PHP:
Melaksanakan Tamat Masa Sesi Tersuai:
Cara paling berkesan untuk tamat tempoh sesi selepas tempoh tertentu tidak aktif adalah untuk melaksanakan mekanisme tamat masa anda sendiri. Ini melibatkan pengekalan cap masa aktiviti terakhir (permintaan) dan mengemas kininya dengan setiap permintaan. Jika aktiviti terakhir melebihi 30 minit yang lalu, anda boleh menyahset dan memusnahkan sesi.
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
Dengan mengemas kini data sesi secara berterusan, anda menghalang tarikh pengubahsuaian fail sesi daripada dialih keluar sebelum waktunya oleh pengumpul sampah.
Langkah Keselamatan Tambahan:
Untuk mengelakkan serangan seperti penetapan sesi, anda boleh menjana semula ID sesi secara berkala dengan mengemas kini cap masa $_SESSION['CREATED']:
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 }
Nota:
Atas ialah kandungan terperinci Bagaimana untuk Tamat Tempoh Sesi PHP dengan Amanah Selepas 30 Minit Tidak Berfungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!