Dalam pembangunan aplikasi web, log masuk tanpa kata laluan (Remember Me) adalah fungsi yang sangat biasa Ia membolehkan pengguna kekal log masuk untuk masa yang lama tanpa perlu memasukkan nombor akaun dan kata laluan mereka setiap kali. Sebagai bahasa pembangunan web yang popular, PHP menyediakan beberapa cara mudah untuk mencapai fungsi ini. Artikel ini akan memperkenalkan cara menggunakan PHP untuk log masuk tanpa kata laluan asas.
Dalam PHP, kami boleh menggunakan fungsi setcookie() untuk menetapkan kuki Apabila pengguna memilih untuk log masuk tanpa kata laluan, kami boleh menetapkan kuki selepas pengguna berjaya log masuk Kemudian tetapkan kuki untuk menyimpan status log masuk pengguna. Berikut ialah contoh kod:
// 设置cookie setcookie('remember_me', '1', time() + 86400 * 7);
Dalam kod di atas, kami menetapkan kuki bernama 'ingat_saya' dengan nilai '1' dan tempoh sah selama 7 hari. Dengan cara ini, apabila pengguna melawat tapak web pada masa akan datang, kami boleh menyemak sama ada 'ingat_saya' wujud dalam kuki untuk menentukan sama ada pengguna telah memilih untuk log masuk tanpa kata laluan.
Setiap kali pengguna melawat tapak web, kami perlu menyemak sama ada terdapat 'ingat_saya' dalam kuki untuk mengesahkan sama ada pengguna telah log masuk. Berikut ialah contoh kod:
// 检查cookie if (isset($_COOKIE['remember_me'])) { // 用户已登录 } else { // 用户未登录 }
Dalam kod di atas, kami menentukan sama ada pengguna dilog masuk dengan menyemak sama ada $_COOKIE['ingat_saya'] wujud, untuk memaparkan halaman yang sesuai kepada pengguna.
Apabila pengguna memilih untuk log masuk tanpa kata laluan, kami perlu menyimpan status log masuk pengguna supaya pengguna tidak perlu masukkan nombor akaun dan kata laluan sekali lagi untuk tempoh masa. Biasanya, kita boleh menyimpan 'token_ingat' ke pangkalan data apabila pengguna log masuk dan menyimpannya dalam kuki. Berikut ialah contoh kod:
// 生成remember_token $remember_token = md5(uniqid(rand(), true)); // 保存remember_token到数据库 $query = "UPDATE users SET remember_token = '{$remember_token}' WHERE id = '{$user_id}'"; mysqli_query($conn, $query); // 设置cookie setcookie('remember_token', $remember_token, time() + 86400 * 7);
Dalam kod di atas, kami menjana remember_token yang unik dan menyimpannya ke pangkalan data. Kami kemudian menyimpan token yang diingati ke kuki pengguna.
Apabila pengguna melawat tapak web sekali lagi, kami perlu menyemak sama ada remember_token wujud dalam kuki dan mencari pengguna yang sepadan dalam pangkalan data. Jika pengguna ditemui, pengguna ditetapkan kepada status log masuk. Berikut ialah contoh kod:
// 检查cookie中的remember_token if (isset($_COOKIE['remember_token'])) { // 查询数据库中匹配的用户 $query = "SELECT * FROM users WHERE remember_token = '{$_COOKIE['remember_token']}'"; $result = mysqli_query($conn, $query); $user = mysqli_fetch_assoc($result); // 如果找到用户,则将用户设置为已登录状态 if ($user) { $_SESSION['user_id'] = $user['id']; // 更新remember_token,防止被恶意利用 $new_remember_token = md5(uniqid(rand(), true)); $query = "UPDATE users SET remember_token = '{$new_remember_token}' WHERE id = '{$user['id']}'"; mysqli_query($conn, $query); // 更新cookie setcookie('remember_token', $new_remember_token, time() + 86400 * 7); } }
Dalam kod di atas, kami menyemak remember_token dalam kuki dan mencari pengguna yang sepadan daripada pangkalan data. Jika pengguna ditemui, kami menetapkan pengguna untuk log masuk dan mengemas kini remember_token untuk mengelakkan eksploitasi berniat jahat.
Ringkasan
Dalam artikel ini, kami memperkenalkan cara menggunakan PHP untuk log masuk asas tanpa kata laluan. Ini adalah ciri aplikasi web yang sangat biasa dan perlu diambil perhatian untuk memastikan keselamatan dan kesahihan apabila dilaksanakan. Kami mengesyorkan agar pembaca merujuk artikel ini semasa melaksanakannya, tetapi ia harus diubah suai dan diselaraskan dengan sewajarnya mengikut situasi tertentu.
Atas ialah kandungan terperinci Cara menggunakan PHP untuk log masuk tanpa kata laluan asas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!