×

Tạo hệ thống quản lý nội dung đơn giản (CMS) bằng PHP

Trong thế giới kỹ thuật số ngày nay, việc quản lý nội dung trực tuyến trở nên rất quan trọng đối với các trang web và blog. Một hệ thống quản lý nội dung (CMS) giúp bạn tạo, chỉnh sửa, và quản lý nội dung của mình một cách dễ dàng hơn. Bài viết này sẽ hướng dẫn bạn cách tạo một hệ thống quản lý nội dung đơn giản bằng ngôn ngữ lập trình PHP.

Bước 1: Chuẩn bị môi trường

Để bắt đầu, bạn cần chuẩn bị một số công cụ và thư viện cần thiết:

  1. Máy chủ web: Bạn có thể sử dụng Apache hoặc Nginx.
  2. PHP: Phiên bản PHP 7.0 trở lên.
  3. MySQL: Hệ quản trị cơ sở dữ liệu MySQL để lưu trữ nội dung.

Bạn có thể sử dụng XAMPP hoặc WAMP để thiết lập một máy chủ địa phương (local server).

Bước 2: Thiết kế cơ sở dữ liệu

Một CMS cơ bản cần ít nhất 2 bảng cơ sở dữ liệu: usersposts.

Tạo bảng users

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

Tạo bảng posts

CREATE TABLE posts (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(150) NOT NULL,
    body TEXT NOT NULL,
    author_id INT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (author_id) REFERENCES users(id)
);

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

Tạo một file db.php để kết nối với cơ sở dữ liệu.

<?php
$host = 'localhost';
$db = 'cms';
$user = 'root';
$pass = '';

$dsn = "mysql:host=$host;dbname=$db";
$options = [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
];

try {
    $pdo = new PDO($dsn, $user, $pass, $options);
} catch (PDOException $e) {
    die('Connection failed: ' . $e->getMessage());
}
?>

Bước 4: Xây dựng hệ thống đăng ký và đăng nhập

Form đăng ký

Tạo file register.php.

<form action="register.php" method="post">
    <input type="text" name="username" placeholder="Username" required>
    <input type="password" name="password" placeholder="Password" required>
    <button type="submit">Register</button>
</form>

Xử lý đăng ký

<?php
require 'db.php';

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

    $sql = "INSERT INTO users (username, password) VALUES (:username, :password)";
    $stmt = $pdo->prepare($sql);
    $stmt->execute(['username' => $username, 'password' => $password]);
    echo "Registration successful";
}
?>

Form đăng nhập

Tạo file login.php.

<form action="login.php" method="post">
    <input type="text" name="username" placeholder="Username" required>
    <input type="password" name="password" placeholder="Password" required>
    <button type="submit">Login</button>
</form>

Xử lý đăng nhập

<?php
require 'db.php';

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

    $sql = "SELECT * FROM users WHERE username = :username";
    $stmt = $pdo->prepare($sql);
    $stmt->execute(['username' => $username]);
    $user = $stmt->fetch();

    if ($user && password_verify($password, $user['password'])) {
        session_start();
        $_SESSION['user_id'] = $user['id'];
        header('Location: index.php');
    } else {
        echo "Invalid credentials";
    }
}
?>

Bước 5: Quản lý bài viết

Form tạo bài viết mới

Tạo file create_post.php.

<form action="create_post.php" method="post">
    <input type="text" name="title" placeholder="Title" required>
    <textarea name="body" placeholder="Body" required></textarea>
    <button type="submit">Post</button>
</form>

Xử lý tạo bài viết

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

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $title = $_POST['title'];
    $body = $_POST['body'];
    $author_id = $_SESSION['user_id'];

    $sql = "INSERT INTO posts (title, body, author_id) VALUES (:title, :body, :author_id)";
    $stmt = $pdo->prepare($sql);
    $stmt->execute(['title' => $title, 'body' => $body, 'author_id' => $author_id]);
    echo "Post created successfully";
}
?>

Bước 6: Hiển thị bài viết

Tạo file index.php để hiển thị danh sách bài viết.

<?php
require 'db.php';

$sql = "SELECT * FROM posts";
$stmt = $pdo->query($sql);

while ($row = $stmt->fetch()) {
    echo "<h2>{$row['title']}</h2>";
    echo "<p>{$row['body']}</p>";
    echo "<hr>";
}
?>

Kết luận

Với những bước trên, bạn đã xây dựng được một hệ thống quản lý nội dung đơn giản bằng PHP. Hệ thống này cho phép người dùng đăng ký, đăng nhập và tạo bài viết mới. Tuy nhiên, đây chỉ là phiên bản cơ bản và còn nhiều tính năng khác có thể bổ sung như chỉnh sửa, xóa bài viết, phân quyền người dùng, và cải thiện bảo mật.

Comments