Giới thiệu dự án

Thương mại điện tử (E-Commerce) ngành thời trang tại Việt Nam đang duy trì tốc độ tăng trưởng kép hàng năm (CAGR) đạt mức 22.5% trong giai đoạn 2020–2025. Phân khúc thời trang nam chứng kiến sự chuyển dịch hành vi tiêu dùng mạnh mẽ từ các cửa hàng truyền thống (Brick-and-Mortar) sang các nền tảng kỹ thuật số. Tuy nhiên, phần lớn các cửa hàng thời trang bán lẻ vừa và nhỏ (SMEs) vẫn vận hành thủ công, dẫn đến tỷ lệ sai lệch tồn kho lên tới 18%, thời gian xử lý đơn hàng kéo dài trên 24 giờ và thiếu công cụ theo dõi hành vi mua sắm của khách hàng theo thời gian thực.

Đề tài "Xây dựng website quản lý bán thời trang nam" do sinh viên Nguyễn Văn Thắng (Khoa Công nghệ thông tin – Điện tử truyền thông, Trường Đại học Kinh Bắc) thực hiện dưới sự hướng dẫn của ThS. Vũ Thị Thương nhằm giải quyết triệt để các rào cản vận hành này thông qua một nền tảng web hướng đối tượng (OOP) hoàn chỉnh, hiệu năng cao và có chi phí triển khai tối ưu.

+-------------------------------------------------------------------------------+
|                       MÔ HÌNH VẬN HÀNH HỆ THỐNG                               |
|                                                                               |
|  [Khách hàng]  <--->  [Giao diện Web (Bootstrap/jQuery)]                      |
|                                |                                              |
|                                v  (HTTP Request / RESTful Action)             |
|  [Admin/Shop]  <--->  [Tầng Xử lý PHP (OOP & Business Logic)]                 |
|                                |                                              |
|                                v  (PDO SQL Statements)                        |
|                       [Cơ sở dữ liệu MySQL]                                   |
+-------------------------------------------------------------------------------+

Mục tiêu dự án

  1. Xây dựng kiến trúc web động: Ứng dụng ngôn ngữ PHP kết hợp cơ sở dữ liệu MySQL, tuân thủ mô hình Model-View-Controller (MVC) và nguyên lý DRY (Don't Repeat Yourself).
  2. Tối ưu hóa trải nghiệm khách hàng (Front-end): Phát triển giao diện chuẩn Responsive Design qua Bootstrap, tích hợp jQuery và AJAX giúp rút ngắn thời gian tương tác sản phẩm xuống dưới 1.5 giây.
  3. Tự động hóa quản lý tồn kho và đơn hàng (Back-end): Xây dựng hệ thống quản trị dữ liệu (CRUD) tập trung, đồng bộ số lượng hàng tồn ngay khi giao dịch phát sinh.
  4. Bảo mật và phân quyền tài khoản (RBAC): Hiện thực hóa cơ chế phân quyền hai cấp độ (Admin và Manager/User) thông qua Session và Cookie bảo mật, mã hóa dữ liệu xác thực người dùng.
  5. Tiếp cận thị trường đa kênh: Hỗ trợ chuẩn hóa cấu trúc dữ liệu Semantic HTML5, tối ưu hóa công cụ tìm kiếm (SEO) và tích hợp các kênh truyền thông xã hội.

Phạm vi và giới hạn

  • Phạm vi triển khai: Toàn bộ chu trình B2C thời trang nam gồm: Danh mục sản phẩm, chi tiết phân loại (size/màu), giỏ hàng động, đặt hàng trực tuyến, quản lý bài viết/feedback và trang quản trị phân quyền.
  • Giới hạn kỹ thuật: Chưa tích hợp trực tiếp cổng thanh toán trực tuyến quốc tế thời gian thực (như Visa/Mastercard API) mà tập trung vào phương thức COD và chuyển khoản ngân hàng; hệ thống cơ sở dữ liệu chạy đơn vùng (Single-node RDBMS).

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Nghiên cứu so sánh giữa hệ sinh thái mã nguồn mở tùy biến và các giải pháp thương mại có sẵn trên thị trường cho thấy sự cần thiết của một nền tảng may đo theo quy trình nội địa:

Tiêu chí đánh giá Giải pháp đề xuất (Custom PHP/MySQL) Nền tảng SaaS (Shopify / Haravan) Nền tảng CMS (WordPress + WooCommerce)
Chi phí vận hành Tối ưu, không mất phí thuê bao hàng tháng Định phí cao (29$–299$/tháng + % doanh thu) Trung bình (chi phí Hosting + Plugin bản quyền)
Khả năng tùy biến mã nguồn Toàn quyền kiểm soát 100% mã nguồn Hạn chế theo API và Sandbox của nhà cung cấp Phụ thuộc vào cấu trúc plugin của bên thứ ba
Tiêu tốn tài nguyên máy chủ Cực thấp (~25MB RAM thực thi) Không áp dụng (Cloud SaaS) Cao (~150MB–256MB RAM do overhead plugin)
Tốc độ xử lý truy vấn Tối ưu hóa trực tiếp câu lệnh SQL Phụ thuộc CDN và hạ tầng SaaS Dễ nghẽn cổ chai nếu database phình to
Độ phức tạp bảo trì Đơn giản, mã lệnh tường minh Do nhà cung cấp quản lý Thường xuyên xung đột phiên bản plugin

Phân loại yêu cầu hệ thống theo mô hình MoSCoW

  • Must have: Xác thực người dùng (Login/Register/Session), Danh mục và Chi tiết sản phẩm, Giỏ hàng ($_SESSION), Đặt hàng lưu trữ Database, Quản trị viên CRUD Sản phẩm/Đơn hàng/Tài khoản.
  • Should have: Lọc sản phẩm theo tầm giá/thể loại, Tìm kiếm từ khóa theo thời gian thực (AJAX), Phân quyền Role Admin vs User, Quản lý trạng thái đơn hàng (Duyệt/Hủy).
  • Could have: Quản lý bài viết blog tiếp thị, Quản lý đánh giá/Feedback từ khách hàng, Tích hợp liên kết mạng xã hội (Facebook Pixel, Instagram).
  • Won't have: Hệ thống gợi ý sản phẩm tự động bằng Deep Learning, Hệ thống đa kho hàng phân tán (Distributed Multi-warehouse).

Thiết kế hệ thống

Hệ thống được tổ chức theo cấu trúc phân tầng bảo đảm tính độc lập giữa giao diện người dùng và tầng xử lý dữ liệu:

[Trình duyệt Khách hàng / Admin UI]
              |
              | (HTTP/HTTPS Requests)
              v
[Web Server: Apache HTTP Server 2.4]
              |
              +---> [Tệp tĩnh: CSS3, Bootstrap 4, jQuery 3.6, Images]
              |
              +---> [Bộ xử lý PHP 8.x Engine]
                          |
                          +---> [Module Xác thực & Phân quyền (Session/Cookie)]
                          +---> [Module Giỏ hàng & Xử lý Giao dịch]
                          +---> [Module Quản trị Danh mục/Sản phẩm/Đơn hàng]
                          |
                          | (MySQL Native Driver / PDO)
                          v
               [Hệ quản trị CSDL MySQL 8.0]
               (Bảng: Account, Product, Orders, Order_Detail)

Ngăn xếp công nghệ chi tiết

  • Backend: PHP 8.2 (áp dụng Object-Oriented Programming, Prepared Statements chống SQL Injection).
  • Cơ sở dữ liệu: MySQL 8.0 Community Server (Storage Engine: InnoDB, Hỗ trợ ACID Transaction và Khóa ngoại).
  • Frontend: HTML5, CSS3/SCSS, Bootstrap 4.6 (12-column Responsive Grid System), jQuery 3.6.4.
  • Web Server: Apache HTTP Server 2.4 tích hợp mô-đun mod_rewrite để định tuyến URL thân thiện.

Thiết kế cơ sở dữ liệu (Database Schema)

Dữ liệu được chuẩn hóa về dạng 3NF nhằm loại bỏ dư thừa dữ liệu và bảo đảm toàn vẹn tham chiếu.

-- Bảng quản lý người dùng và phân quyền
CREATE TABLE `Account` (
    `id` INT AUTO_INCREMENT PRIMARY KEY,
    `email` VARCHAR(100) NOT NULL UNIQUE,
    `password` VARCHAR(255) NOT NULL,
    `sdt` VARCHAR(15) NOT NULL,
    `hoten` VARCHAR(100) NOT NULL,
    `role` ENUM('admin', 'manager', 'customer') DEFAULT 'customer',
    `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Bảng lưu trữ danh mục sản phẩm thời trang nam
CREATE TABLE `Product` (
    `id` INT AUTO_INCREMENT PRIMARY KEY,
    `anh` VARCHAR(255) NOT NULL,
    `tensp` VARCHAR(255) NOT NULL,
    `giagoc` INT UNSIGNED NOT NULL,
    `gia` INT UNSIGNED NOT NULL,
    `theloai` VARCHAR(100) NOT NULL,
    `status` VARCHAR(50) DEFAULT 'active',
    `mota` TEXT DEFAULT NULL,
    `soluong` INT UNSIGNED NOT NULL DEFAULT 0,
    `created_time` DATE NOT NULL,
    `last_update` DATE NOT NULL,
    INDEX `idx_theloai` (`theloai`),
    INDEX `idx_gia` (`gia`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

Phương pháp luận phát triển (Methodology)

Dự án áp dụng mô hình phát triển phần mềm lặp (Iterative Waterfall kết hợp Agile Sprints) trong thời gian 12 tuần:

Tuần 1-2: Khảo sát nghiệp vụ & Thu thập yêu cầu (SRS)
Tuần 3-4: Thiết kế CSDL (ERD, DDL) & Wireframe UI/UX
Tuần 5-8: Lập trình Backend (PHP Core, CRUD, Session Cart) & Frontend Integration
Tuần 9-10: Kiểm thử chức năng, Tối ưu hóa câu lệnh SQL, Vá lỗ hổng bảo mật
Tuần 11-12: Triển khai thử nghiệm (Staging), Đánh giá UAT & Viết tài liệu khóa luận

Triển khai và kết quả thực nghiệm

Quá trình phát triển và mã nguồn lõi

Hệ thống hiện thực hóa các chức năng trọng yếu bằng mã nguồn PHP tối ưu, loại bỏ việc lặp mã qua các lớp đối tượng và hàm tái sử dụng.

1. Thuật toán quản lý giỏ hàng bất đồng bộ với Session

Xử lý thêm, cập nhật số lượng và tính tổng tiền sản phẩm trong bộ nhớ máy chủ mà không làm tăng tải truy vấn vào database:

<?php
// Khởi tạo và xử lý logic giỏ hàng (Cart Controller)
session_start();

class ShoppingCart {
    public function addToCart($productId, $quantity, $productData) {
        $quantity = max(1, intval($quantity));
        if (!isset($_SESSION['cart'])) {
            $_SESSION['cart'] = [];
        }
        
        if (isset($_SESSION['cart'][$productId])) {
            $_SESSION['cart'][$productId]['quantity'] += $quantity;
        } else {
            $_SESSION['cart'][$productId] = [
                'name'     => $productData['tensp'],
                'price'    => $productData['gia'],
                'image'    => $productData['anh'],
                'quantity' => $quantity
            ];
        }
    }

    public function calculateTotal() {
        $totalAmount = 0;
        if (!empty($_SESSION['cart'])) {
            foreach ($_SESSION['cart'] as $id => $item) {
                $totalAmount += $item['price'] * $item['quantity'];
            }
        }
        return $totalAmount;
    }
}
?>

2. Xử lý xác thực an toàn và phòng chống tấn công SQL Injection

Sử dụng PHP Data Objects (PDO) cùng cơ chế Prepared Statements và hàm băm mật khẩu chuẩn công nghiệp:

<?php
class AuthService {
    private $dbConnection;

    public function __construct(PDO $pdo) {
        $this->dbConnection = $pdo;
    }

    public function authenticateUser($email, $rawPassword) {
        $sql = "SELECT id, email, password, hoten, role FROM Account WHERE email = :email LIMIT 1";
        $stmt = $this->dbConnection->prepare($sql);
        $stmt->bindParam(':email', $email, PDO::PARAM_STR);
        $stmt->execute();
        
        $user = $stmt->fetch(PDO::FETCH_ASSOC);
        if ($user && password_verify($rawPassword, $user['password'])) {
            // Thiết lập Session an toàn
            $_SESSION['auth_user'] = [
                'id'       => $user['id'],
                'name'     => $user['hoten'],
                'role'     => $user['role'],
                'logged_in'=> true
            ];
            session_regenerate_id(true); // Ngăn ngừa Session Fixation
            return true;
        }
        return false;
    }
}
?>

3. Xử lý tìm kiếm sản phẩm động với jQuery AJAX

Thực thi truy vấn dữ liệu bất đồng bộ giúp người dùng xem kết quả ngay khi nhập từ khóa:

$(document).ready(function() {
    $('#searchInput').on('keyup', function() {
        let query = $(this).val().trim();
        if (query.length >= 2) {
            $.ajax({
                url: 'ajax_search.php',
                method: 'POST',
                data: { keyword: query },
                dataType: 'json',
                success: function(response) {
                    let htmlOutput = '';
                    if (response.length > 0) {
                        $.each(response, function(index, item) {
                            htmlOutput += `
                                <div class="col-md-4 mb-3">
                                    <div class="card h-100">
                                        <img src="${item.anh}" class="card-img-top" alt="${item.tensp}">
                                        <div class="card-body">
                                            <h5 class="card-title">${item.tensp}</h5>
                                            <p class="text-danger font-weight-bold">${Number(item.gia).toLocaleString('vi-VN')} đ</p>
                                            <a href="product_detail.php?id=${item.id}" class="btn btn-sm btn-primary">Chi tiết</a>
                                        </div>
                                    </div>
                                </div>`;
                        });
                    } else {
                        htmlOutput = '<div class="col-12"><p class="text-muted">Không tìm thấy sản phẩm phù hợp.</p></div>';
                    }
                    $('#productContainer').html(htmlOutput);
                }
            });
        }
    });
});

Kiểm thử và đánh giá hiệu năng (Testing & Validation)

Hệ thống trải qua 3 giai đoạn kiểm thử nghiêm ngặt:

  1. Unit Testing & Boundary Analysis: Kiểm thử giới hạn cho 45 ca kiểm thử (CRUD sản phẩm, trường số lượng âm, chuỗi ký tự đặc biệt). Tỷ lệ vượt qua đạt 100%.
  2. Security & Vulnerability Assessment: Kiểm tra khả năng kháng tấn công XSS (Cross-Site Scripting) và SQL Injection bằng công cụ kiểm thử tự động, kết quả không phát hiện lỗ hổng nghiêm trọng nhờ cơ chế lọc htmlspecialchars() và Prepared Statements.
  3. Performance Benchmark: Đo lường bằng Google Lighthouse và Apache Benchmark (ab tool) với 100 người dùng đồng thời (Concurrency Level: 100, Tổng: 1000 requests):
Concurrency Level:      100
Time taken for tests:   3.214 seconds
Complete requests:      1000
Failed requests:        0
Requests per second:    311.14 [#/sec] (mean)
Time per request:       3.214 [ms] (mean, across all concurrent requests)
Page Load Time (Avg):   1.24 seconds
Lighthouse Score:       Performance: 94/100 | Accessibility: 96/100 | SEO: 92/100

Đổi mới và đóng góp kỹ thuật

  1. Kiến trúc Session-First cho Giỏ hàng: Giảm 70% số lượng truy vấn ghi vào cơ sở dữ liệu so với cách lưu giỏ hàng trực tiếp vào bảng tạm trong Database, giúp hệ thống chịu tải tốt trong các đợt flash sale.
  2. Cơ chế phân quyền đa tầng nhẹ (Lightweight RBAC): Tích hợp trực tiếp kiểm tra quyền trong Middleware Session giúp ngăn chặn truy cập trái phép vào các trang quản trị /admin/ mà không cần sử dụng các thư viện cồng kềnh.
  3. Chuẩn hóa quy trình thương mại cho SMEs: Cung cấp một bộ khung (Framework) có khả năng tái sử dụng cao cho các cửa hàng bán lẻ thời trang nam tại Việt Nam, giảm thời gian triển khai từ vài tháng xuống còn dưới 1 tuần.

Ứng dụng thực tế và triển khai

Kịch bản vận hành thực tế

  • Cửa hàng thời trang nam độc lập: Vận hành đồng thời tại quầy và online; nhân viên bán hàng sử dụng trang quản trị để tra cứu hàng tồn, tạo đơn nhanh và xuất hóa đơn cho khách.
  • Mô hình kinh doanh tiếp thị liên kết (Affiliate/Influencer): Tích hợp bài viết blog giới thiệu phong cách ăn mặc (Lookbook) gắn kèm liên kết trực tiếp đến sản phẩm, tăng tỷ lệ chuyển đổi đơn hàng (Conversion Rate) thêm 28%.

Yêu cầu triển khai hạ tầng

  • Hệ điều hành: Linux (Ubuntu Server 22.04 LTS / CentOS 8) hoặc Windows Server (hỗ trợ XAMPP/WampServer cho môi trường phát triển).
  • Môi trường Web Server: Apache 2.4.x hoặc NGINX 1.20.x kết hợp PHP-FPM.
  • Cấu hình phần cứng tối thiểu: 1 vCPU, 1GB RAM, 20GB SSD Storage (đáp ứng lưu lượng 5,000 lượt truy cập/ngày).
  • Bảo mật: Chứng chỉ SSL/TLS (Let's Encrypt), Cấu hình tường lửa UFW mở cổng 80 và 443.

Hạn chế và hướng phát triển

Hạn chế hiện tại

  • Hệ thống cơ sở dữ liệu chưa thiết lập mô hình Master-Slave Replication để dự phòng sự cố khi khối lượng giao dịch đột biến.
  • Chưa tích hợp Webhook đồng bộ tự động với các đơn vị vận chuyển (Giao Hàng Nhanh, Viettel Post).

Hướng phát triển

  1. Nâng cấp kiến trúc Microservices & RESTful API: Tách biệt hoàn toàn tầng Backend thành REST API để phát triển ứng dụng di động (Mobile App) trên nền tảng Flutter hoặc React Native.
  2. Tích hợp cổng thanh toán trực tuyến: Kết nối trực tiếp cổng thanh toán VNPAY, MoMo API nhằm tự động hóa quy trình xác nhận giao dịch.
  3. Ứng dụng AI/Machine Learning: Xây dựng thuật toán gợi ý kích thước trang phục dựa trên chiều cao, cân nặng của khách hàng và bộ lọc đề xuất sản phẩm liên quan.

Đối tượng hưởng lợi

  • Sinh viên ngành CNTT: Nguồn tài liệu mẫu chuẩn mực về thiết kế hệ thống web động bằng PHP/MySQL, sơ đồ phân tích use case, sequence diagram và phương pháp chuẩn hóa dữ liệu.
  • Lập trình viên Web: Tiếp cận mô hình code PHP hướng đối tượng tinh gọn, kỹ thuật thao tác Session an toàn và kỹ thuật đồng bộ dữ liệu giao diện bằng jQuery AJAX.
  • Chủ doanh nghiệp/Cửa hàng thời trang: Sở hữu giải pháp quản lý bán hàng tiết kiệm chi phí, dễ dàng mở rộng và độc lập hoàn toàn với các nền tảng tính phí định kỳ.
  • Nhà nghiên cứu: Dữ liệu thực nghiệm về hiệu năng của các hệ thống web PHP nguyên bản so với các nền tảng thương mại điện tử đóng gói sẵn.

Câu hỏi thường gặp

1. Yêu cầu kỹ thuật tối thiểu để triển khai website lên môi trường thực tế là gì?

Hệ thống chỉ yêu cầu một máy chủ ảo (VPS) hoặc Shared Hosting hỗ trợ PHP 7.4+ (khuyến nghị PHP 8.2), hệ quản trị MySQL 5.7+ hoặc MariaDB 10.3+, và web server Apache có kích hoạt mô-đun mod_rewrite.

2. Website có thể chịu tải được bao nhiêu người dùng truy cập đồng thời?

Với cấu hình máy chủ 2 vCPU / 4GB RAM, hệ thống có khả năng xử lý ổn định từ 250–350 yêu cầu đồng thời (Requests per second) và phục vụ tốt lưu lượng truy cập lên đến 30,000–50,000 lượt xem trang mỗi ngày nhờ kiến trúc mã nguồn nhẹ và chỉ mục SQL tối ưu.

3. Làm thế nào để tích hợp thêm các cổng thanh toán như MoMo hay VNPAY?

Hệ thống đã được module hóa tầng xử lý đơn hàng. Để tích hợp, lập trình viên chỉ cần tạo một lớp PaymentGateway kết nối với API của đối tác thanh toán, gửi payload đơn hàng và tiếp nhận IPN (Instant Payment Notification) từ cổng thanh toán để cập nhật trường trạng thái trong bảng Orders.

4. Chi phí duy trì và bảo trì hệ thống hàng năm ước tính khoảng bao nhiêu?

Chi phí vận hành định kỳ rất tiết kiệm, chỉ bao gồm tên miền (.vn hoặc .com: ~250,000 – 750,000 VNĐ/năm) và phí thuê máy chủ/Hosting (~600,000 – 1,500,000 VNĐ/năm), không phát sinh bất kỳ khoản phí hoa hồng đơn hàng nào.

5. Website có hỗ trợ tối ưu SEO để đưa sản phẩm lên top Google không?

Có. Giao diện được cấu trúc theo chuẩn HTML5 Semantic (<header>, <nav>, <article>, <section>), tích hợp thẻ meta động cho từng sản phẩm và hỗ trợ cấu trúc đường dẫn thân thiện với công cụ tìm kiếm, giúp các trang chi tiết sản phẩm thời trang nhanh chóng được index trên Google Search.


Kết luận

Đề tài khóa luận "Xây dựng website quản lý bán thời trang nam" của tác giả Nguyễn Văn Thắng đã giải quyết trọn vẹn bài toán chuyển đổi số cho các doanh nghiệp thời trang vừa và nhỏ. Bằng việc làm chủ ngăn xếp công nghệ nền tảng PHP, MySQL, Bootstrap và jQuery, hệ thống mang lại hiệu năng vận hành vượt trội, tính ổn định cao và khả năng tùy biến linh hoạt. Đồ án không chỉ khẳng định giá trị ứng dụng thực tiễn trong kinh doanh bán lẻ thời trang mà còn là tài liệu tham khảo kỹ thuật giá trị cho cộng đồng học thuật và phát triển phần mềm ứng dụng.