×

Tạo hệ thống đăng nhập và đăng ký người dùng với PHP

Để xây dựng một hệ thống đăng nhập và đăng ký người dùng, bạn cần sử dụng nhiều công cụ kết hợp như PHP, MySQL và các thư viện mã nguồn mở khác. Hệ thống này sẽ giúp bảo mật thông tin người dùng và hỗ trợ việc quản lý tài khoản hiệu quả.

Bước 1: Thiết lập cơ sở dữ liệu MySQL

Trước tiên, tạo cơ sở dữ liệu và bảng người dùng trong MySQL. Cơ sở dữ liệu này sẽ lưu trữ thông tin người dùng như tên, email và mật khẩu đã được mã hóa.

CREATE DATABASE user_management;
USE user_management;

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

Bước 2: Kết nối PHP với cơ sở dữ liệu MySQL

Tạo tập tin db.php để quản lý việc kết nối đến cơ sở dữ liệu.

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "user_management";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
?>

Bước 3: Đăng ký người dùng

Tạo một trang đăng ký (register.php) với form yêu cầu người dùng nhập thông tin cần thiết.

Form HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Register</title>
</head>
<body>
    <form action="register.php" method="POST">
        <input type="text" name="username" placeholder="Username" required><br>
        <input type="email" name="email" placeholder="Email" required><br>
        <input type="password" name="password" placeholder="Password" required><br>
        <button type="submit" name="register">Register</button>
    </form>
</body>
</html>

Xử lý đăng ký

<?php
require 'db.php';

if (isset($_POST['register'])) {
    $username = $conn->real_escape_string($_POST['username']);
    $email = $conn->real_escape_string($_POST['email']);
    $password = password_hash($conn->real_escape_string($_POST['password']), PASSWORD_BCRYPT);

    $sql = "INSERT INTO users (username, email, password) VALUES ('$username', '$email', '$password')";

    if ($conn->query($sql) === TRUE) {
        echo "Registration successful!";
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }
}
?>

Bước 4: Đăng nhập người dùng

Tạo một trang đăng nhập (login.php) với form yêu cầu người dùng nhập email và mật khẩu.

Form HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Login</title>
</head>
<body>
    <form action="login.php" method="POST">
        <input type="email" name="email" placeholder="Email" required><br>
        <input type="password" name="password" placeholder="Password" required><br>
        <button type="submit" name="login">Login</button>
    </form>
</body>
</html>

Xử lý đăng nhập

<?php
require 'db.php';
session_start();

if (isset($_POST['login'])) {
    $email = $conn->real_escape_string($_POST['email']);
    $password = $conn->real_escape_string($_POST['password']);

    $sql = "SELECT * FROM users WHERE email='$email'";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
        $user = $result->fetch_assoc();

        if (password_verify($password, $user['password'])) {
            $_SESSION['user_id'] = $user['id'];
            $_SESSION['username'] = $user['username'];
            echo "Login successful!";
        } else {
            echo "Invalid password!";
        }
    } else {
        echo "No user found with this email!";
    }
}
?>

Bước 5: Tạo trang bảo vệ và đăng xuất

Tạo một trang được bảo vệ (protected.php) chỉ cho phép người đã đăng nhập mới có thể truy cập.

<?php
session_start();
if (!isset($_SESSION['user_id'])) {
    header("Location: login.php");
    exit();
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Protected Page</title>
</head>
<body>
    <h1>Welcome, <?php echo $_SESSION['username']; ?>!</h1>
    <a href="logout.php">Logout</a>
</body>
</html>

Xử lý đăng xuất

<?php
session_start();
session_destroy();
header("Location: login.php");
exit();
?>

Kết luận

Hệ thống này sử dụng cơ sở dữ liệu MySQL để lưu trữ thông tin người dùng, PHP để xử lý logic đăng ký và đăng nhập, kèm theo việc sử dụng các phương pháp bảo mật như mã hóa mật khẩu để bảo vệ dữ liệu người dùng. Việc hiểu rõ và tuân theo các bước trên sẽ giúp bạn tạo ra một hệ thống đăng nhập và đăng ký người dùng cơ bản nhưng hiệu quả.

Comments