Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Melaksanakan Fungsi "Ingat Saya" dalam Sistem Log Masuk PHP untuk Pengalaman Pengguna yang Dipertingkatkan?
Sistem Log Masuk PHP dengan Fungsi "Remember Me" [Pendua]
Untuk meningkatkan pengalaman pengguna, anda boleh melaksanakan "ingat saya" ciri dalam sistem log masuk PHP anda, membolehkan pengguna kekal log masuk merentas berbilang sesi.
Storan Kuki Selamat
Amalan terbaik untuk menyimpan kuki berterusan ialah menggunakan jadual berasingan dalam pangkalan data yang dipanggil auth_tokens:
CREATE TABLE `auth_tokens` ( `id` integer(11) not null UNSIGNED AUTO_INCREMENT, `selector` char(12), `token` char(64), `userid` integer(11) not null UNSIGNED, `expires` datetime, PRIMARY KEY (`id`) );
Selepas Log Masuk
Setelah log masuk, jana nilai rawak unik untuk pemilih dan token:
if ($login->success && $login->rememberMe) { $selector = base64_encode(random_bytes(9)); $authenticator = random_bytes(33); setcookie( 'remember', $selector . ':' . base64_encode($authenticator), time() + 864000, // 10 days '/', 'yourdomain.com', true, // TLS-only true // http-only ); // Insert data into the database $database->exec( "INSERT INTO auth_tokens (selector, token, userid, expires) VALUES (?, ?, ?, ?)", [ $selector, hash('sha256', $authenticator), $login->userId, date('Y-m-d\TH:i:s', time() + 864000) ] ); }
Pengesahan Semula
if (empty($_SESSION['userid']) && !empty($_COOKIE['remember'])) { list($selector, $authenticator) = explode(':', $_COOKIE['remember']); // Retrieve row from the database $row = $database->selectRow( "SELECT * FROM auth_tokens WHERE selector = ?", [ $selector ] ); // Verify hash and set session if (hash_equals($row['token'], hash('sha256', base64_decode($authenticator)))) { $_SESSION['userid'] = $row['userid']; // Regenerate a login token as per previous example } }
Butiran
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Fungsi "Ingat Saya" dalam Sistem Log Masuk PHP untuk Pengalaman Pengguna yang Dipertingkatkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!