Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menulis sistem pengesahan pengguna yang selamat menggunakan PHP

Bagaimana untuk menulis sistem pengesahan pengguna yang selamat menggunakan PHP

WBOY
WBOYasal
2023-07-06 12:49:251266semak imbas

Cara menulis sistem pengesahan pengguna yang selamat menggunakan PHP

Pengenalan:
Dalam aplikasi Internet moden, pengesahan pengguna merupakan komponen penting. Sistem pengesahan pengguna yang selamat dan boleh dipercayai adalah penting untuk melindungi data pengguna dan keselamatan aplikasi. Oleh itu, adalah sangat penting untuk mempelajari cara menulis sistem pengesahan pengguna yang selamat menggunakan PHP. Artikel ini akan memperkenalkan cara untuk melaksanakan sistem pengesahan pengguna yang selamat dalam PHP dan memberikan contoh kod.

1. Persediaan
Sebelum anda mula menulis sistem pengesahan pengguna, anda perlu menyediakan persekitaran dan alatan berikut:

  1. Pelayan web dengan PHP dipasang
  2. Sistem pengurusan pangkalan data, seperti MySQL
  3. Editor seperti Teks Sublime atau Kod Visual Studio.

2. Reka bentuk pangkalan data
Sebelum kita mula menulis kod, kita perlu mereka bentuk skema pangkalan data. Sistem pengesahan pengguna biasa memerlukan jadual berikut:

  1. Jadual pengguna (pengguna): menyimpan maklumat pengguna, seperti nama pengguna, kata laluan, dll.
  2. jadual peranan (peranan): menyimpan maklumat peranan pengguna (jadual kebenaran; kebenaran): Menyimpan maklumat kebenaran pengguna;
  3. Jadual persatuan peranan pengguna (peranan_pengguna): menyimpan perkaitan antara pengguna dan peranan;
  4. Anda boleh menggunakan pernyataan SQL berikut untuk membuat jadual di atas:
  5. CREATE TABLE users (
        id INT PRIMARY KEY AUTO_INCREMENT,
        username VARCHAR(255) NOT NULL UNIQUE,
        password VARCHAR(255) NOT NULL
    );
    
    CREATE TABLE roles (
        id INT PRIMARY KEY AUTO_INCREMENT,
        name VARCHAR(255) NOT NULL UNIQUE
    );
    
    CREATE TABLE permissions (
        id INT PRIMARY KEY AUTO_INCREMENT,
        name VARCHAR(255) NOT NULL UNIQUE
    );
    
    CREATE TABLE users_roles (
        user_id INT NOT NULL,
        role_id INT NOT NULL,
        PRIMARY KEY (user_id, role_id),
        FOREIGN KEY (user_id) REFERENCES users (id),
        FOREIGN KEY (role_id) REFERENCES roles (id)
    );
    
    CREATE TABLE roles_permissions (
        role_id INT NOT NULL,
        permission_id INT NOT NULL,
        PRIMARY KEY (role_id, permission_id),
        FOREIGN KEY (role_id) REFERENCES roles (id),
        FOREIGN KEY (permission_id) REFERENCES permissions (id)
    );
  6. 3. Pendaftaran pengguna
Laksanakan fungsi pendaftaran pengguna, termasuk mengesahkan nama pengguna dan kata laluan, memasukkan maklumat pengguna ke dalam jadual pengguna, dsb. Berikut ialah contoh kod untuk halaman pendaftaran pengguna yang mudah:

<?php
session_start();
$error = '';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $username = $_POST['username'];
    $password = $_POST['password'];

    // 验证用户名和密码
    if (empty($username) || empty($password)) {
        $error = '请输入用户名和密码';
    } else {
        // 将用户信息插入到用户表中
        // ...
    }
}
?>

<!DOCTYPE html>
<html>
<body>

<h2>用户注册</h2>

<form method="POST" action="">
  用户名:<input type="text" name="username"><br>
  密码:<input type="password" name="password"><br>
  <input type="submit" value="注册">
</form>

<p><?php echo $error; ?></p>

</body>
</html>

IV Log masuk pengguna

Laksanakan fungsi log masuk pengguna, termasuk mengesahkan nama pengguna dan kata laluan yang dimasukkan oleh pengguna Selepas pengesahan berjaya, maklumat pengguna disimpan dalam sesi untuk kegunaan seterusnya. Berikut ialah contoh kod halaman log masuk pengguna yang mudah:

<?php
session_start();
$error = '';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $username = $_POST['username'];
    $password = $_POST['password'];

    // 根据用户名查询用户信息
    // ...

    // 验证用户名和密码
    if ($user && password_verify($password, $user['password'])) {
        // 将用户信息存储在会话中
        $_SESSION['user'] = $user;
        // 跳转到用户首页
        header('Location: user_home.php');
        exit;
    } else {
        $error = '用户名或密码不正确';
    }
}
?>

<!DOCTYPE html>
<html>
<body>

<h2>用户登录</h2>

<form method="POST" action="">
  用户名:<input type="text" name="username"><br>
  密码:<input type="password" name="password"><br>
  <input type="submit" value="登录">
</form>

<p><?php echo $error; ?></p>

</body>
</html>

5. Pengesahan kebenaran pengguna

Selepas pengguna berjaya log masuk, pengguna perlu disahkan untuk mendapatkan kebenaran untuk memastikan pengguna hanya boleh mengakses halaman yang dia atau dia ada kebenaran. Berikut ialah contoh kod pengesahan kebenaran mudah:

<?php
session_start();

// 检查用户是否登录
if (!isset($_SESSION['user'])) {
    // 跳转到登录页面
    header('Location: login.php');
    exit;
}

// 检查用户是否具备权限
function checkPermission($permission) {
    $user = $_SESSION['user'];
    // 根据用户角色查询用户具备的权限
    // ...

    // 验证用户是否具备权限
    if (in_array($permission, $user['permissions'])) {
        return true;
    } else {
        return false;
    }
}
?>

Ringkasan:

Melalui kod contoh di atas, kami memahami cara menggunakan PHP untuk menulis sistem pengesahan pengguna selamat asas. Dalam aplikasi praktikal, perhatian juga mesti diberikan kepada menapis dan mengesahkan input pengguna, menyulitkan dan menyimpan kata laluan pengguna, dan mengendalikan proses mendapatkan kata laluan untuk meningkatkan keselamatan sistem dan pengalaman pengguna. Pada masa yang sama, sistem pengesahan pengguna juga merupakan satu proses yang dinamik dan perlu terus diperbaiki dan disempurnakan mengikut keperluan sebenar.

Atas ialah kandungan terperinci Bagaimana untuk menulis sistem pengesahan pengguna yang selamat menggunakan PHP. 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