Xây dựng hệ thống đăng ký và đăng nhập

Tạo bởi Hoàng Vũ, chỉnh sửa cuối lúc 28 tháng 2, 2025

Hệ thống đăng ký và đăng nhập là một phần quan trọng trong hầu hết các ứng dụng web. Bài học này sẽ hướng dẫn cách tạo form đăng ký, lưu thông tin người dùng vào database, xác thực tài khoản khi đăng nhập và sử dụng session để quản lý trạng thái người dùng.

1. Hệ thống đăng ký và đăng nhập

1.1 Thiết kế form đăng ký và lưu thông tin vào database

Tạo bảng users trong MySQL

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL UNIQUE,
    email VARCHAR(100) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL
);

Tạo form đăng ký (register.php)

<form action="register.php" method="POST">
    <input type="text" name="username" placeholder="Tên đăng nhập" required>
    <input type="email" name="email" placeholder="Email" required>
    <input type="password" name="password" placeholder="Mật khẩu" required>
    <button type="submit">Đăng ký</button>
</form>

Xử lý đăng ký (register.php)

<?php
session_start();
include 'config.php';

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $username = $_POST["username"];
    $email = $_POST["email"];
    $password = password_hash($_POST["password"], PASSWORD_DEFAULT);

    $stmt = $conn->prepare("INSERT INTO users (username, email, password) VALUES (?, ?, ?)");
    $stmt->bind_param("sss", $username, $email, $password);
    if ($stmt->execute()) {
        echo "Đăng ký thành công!";
    } else {
        echo "Lỗi: " . $stmt->error;
    }
}
?>

1.2 Xác thực tài khoản khi đăng nhập và sử dụng session

Tạo form đăng nhập (login.php)

<form action="login.php" method="POST">
    <input type="text" name="username" placeholder="Tên đăng nhập" required>
    <input type="password" name="password" placeholder="Mật khẩu" required>
    <button type="submit">Đăng nhập</button>
</form>

Xử lý đăng nhập (login.php)

<?php
session_start();
include 'config.php';

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $username = $_POST["username"];
    $password = $_POST["password"];
    
    $stmt = $conn->prepare("SELECT id, password FROM users WHERE username = ?");
    $stmt->bind_param("s", $username);
    $stmt->execute();
    $result = $stmt->get_result();
    
    if ($result->num_rows > 0) {
        $row = $result->fetch_assoc();
        if (password_verify($password, $row["password"])) {
            $_SESSION["loggedin"] = true;
            $_SESSION["username"] = $username;
            header("Location: welcome.php");
        } else {
            echo "Sai mật khẩu!";
        }
    } else {
        echo "Không tìm thấy người dùng!";
    }
}
?>

1.3 Đăng xuất và hủy session

<?php
session_start();
session_destroy();
echo "Bạn đã đăng xuất.";
?>

2. Kết luận

  • Thiết kế form đăng ký và lưu thông tin người dùng vào database.
  • Xác thực tài khoản khi đăng nhập bằng session.
  • Mã hóa mật khẩu với password_hash() để bảo mật dữ liệu người dùng.
Website Logo

Với hơn 10 năm kinh nghiệm lập trình web và từng làm việc với nhiều framework, ngôn ngữ như PHP, JavaScript, React, jQuery, CSS, HTML, CakePHP, Laravel..., tôi hy vọng những kiến thức được chia sẻ tại đây sẽ hữu ích và thiết thực cho các bạn.

Bình luận

Website Logo

Chào, tôi là Vũ. Đây là blog hướng dẫn lập trình của tôi.

Liên hệ công việc qua email dưới đây.

lhvuctu@gmail.com

Chúng Tôi Trên

Bạn đang muốn học về lập trình website?

Bạn cần nâng cao kiến thức chuyên nghiệp hơn để nâng cao cơ hội nghề nghiệp? Liên hệ