Cara menggunakan PHP untuk log masuk tanpa kata laluan asas

PHPz
Lepaskan: 2023-06-22 08:04:01
asal
1409 orang telah melayarinya

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.

  1. Tetapkan Kuki

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);
Salin selepas log masuk

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.

  1. Semak Kuki

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 {
    // 用户未登录
}
Salin selepas log masuk

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.

  1. Pastikan pengguna log masuk

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);
Salin selepas log masuk

Dalam kod di atas, kami menjana remember_token yang unik dan menyimpannya ke pangkalan data. Kami kemudian menyimpan token yang diingati ke kuki pengguna.

  1. Pulihkan status log masuk 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);
    }
}
Salin selepas log masuk

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!