Giới thiệu dự án
Sự bùng nổ của cuộc Cách mạng Công nghiệp 4.0 và quá trình chuyển đổi số toàn cầu đã tái định hình toàn bộ cấu trúc ngành bán lẻ. Theo báo cáo từ e-Conomy SEA, thị trường thương mại điện tử (TMĐT) Đông Nam Á duy trì tốc độ tăng trưởng kép hàng năm (CAGR) trên 16%, trong đó quy mô thị trường bán lẻ trực tuyến tại Việt Nam đạt mốc trên 20 tỷ USD. Hành vi tiêu dùng dịch chuyển mạnh mẽ từ mô hình truyền thống ("gạch và vữa" - brick-and-mortar) sang trải nghiệm mua sắm kỹ thuật số đa kênh (omnichannel). Tuy nhiên, các doanh nghiệp vừa và nhỏ (SMEs) cùng các cửa hàng kinh doanh chuyên biệt (như nhập khẩu hàng hóa chính hãng từ Mỹ/Amazon) thường đối mặt với rào cản chi phí bản quyền lớn, sự phức tạp khi triển khai các nền tảng SaaS đắt đỏ, hoặc các hệ thống CMS đóng gói cồng kềnh gây lãng phí tài nguyên máy chủ.
Đề tài tốt nghiệp "Thiết kế và xây dựng website bán hàng bằng PHP" của tác giả Nguyễn Anh Tài (Khoa Khoa học Máy tính, Trường Đại học Công nghệ Thông tin và Truyền thông Việt - Hàn, dưới sự hướng dẫn của ThS. Ninh Khánh Chi) được phát triển nhằm giải quyết triệt để bài toán tối ưu hóa quy trình phân phối sản phẩm trực tuyến. Hệ thống tập trung vào việc kiến tạo một nền tảng bán lẻ tinh gọn, xử lý nghiệp vụ mượt mà từ khâu hiển thị danh mục, quản lý giỏ hàng đến xử lý đơn đặt hàng và quản trị tồn kho.
+-------------------------------------------------------------------------+
| HỆ THỐNG E-COMMERCE PHP |
+------------------------------------+------------------------------------+
| PHÂN HỆ NGƯỜI DÙNG | PHÂN HỆ QUẢN TRỊ |
| - Đăng ký, Đăng nhập (Auth) | - Quản lý sản phẩm (CRUD) |
| - Danh mục & Chi tiết sản phẩm | - Quản lý danh mục & Tồn kho |
| - Giỏ hàng tương tác (Session/DB) | - Quản lý tài khoản người dùng |
| - Quy trình Checkout & Đặt hàng | - Duyệt đơn hàng & Thống kê |
+------------------------------------+------------------------------------+
Mục tiêu dự án
- Xây dựng kiến trúc web hướng dữ liệu chuẩn mực: Thiết kế cơ sở dữ liệu quan hệ (RDBMS) chuẩn hóa 3NF, bảo đảm tính toàn vẹn dữ liệu (referential integrity) giữa danh mục sản phẩm, người dùng và hóa đơn.
- Tối ưu hóa trải nghiệm người dùng (UX/UI): Thiết kế giao diện tương thích hoàn toàn (responsive) trên đa nền tảng màn hình từ máy tính để bàn (desktop) đến thiết bị di động (mobile) thông qua CSS3 Media Queries và Bootstrap.
- Hiện thực hóa quy trình nghiệp vụ thương mại điện tử khép kín: Cung cấp đầy đủ module chức năng: xác thực người dùng, duyệt danh mục, tìm kiếm, giỏ hàng động, thanh toán đơn hàng (checkout) và thông báo trạng thái.
- Phát triển bảng điều khiển quản trị (Admin Dashboard) mạnh mẽ: Cho phép quản lý vòng đời sản phẩm (CRUD: Create - Read - Update - Delete), kiểm duyệt đơn hàng theo thời gian thực và quản lý tập trung tài khoản khách hàng.
- Đảm bảo hiệu năng và tính an toàn: Giảm thiểu độ trễ truy vấn dữ liệu (Query Latency < 25ms), tối ưu thời gian tải trang (Page Load Time < 1.5s trên môi trường thử nghiệm), chống các lỗ hổng bảo mật cơ bản như SQL Injection và XSS.
Phạm vi và giới hạn hệ thống
- Phạm vi: Ứng dụng web thương mại điện tử mô hình B2C đơn kênh phục vụ người tiêu dùng cuối và bộ phận quản trị cửa hàng.
- Giới hạn: Hệ thống tập trung xử lý luồng đặt hàng trực tiếp và thanh toán khi nhận hàng (COD); chưa tích hợp cổng thanh toán trực tuyến bên thứ ba (như VNPAY, MoMo) qua API Gateway và chưa áp dụng kiến trúc phân tán đa máy chủ (distributed systems).
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Trước khi xây dựng hệ thống, việc đánh giá các giải pháp hiện hành trên thị trường là điều kiện tiên quyết nhằm xác định đúng khoảng trống công nghệ và tối ưu chi phí phát triển:
| Tiêu chí so sánh |
Nền tảng SaaS (Shopify / Haravan) |
Nền tảng Open-Source CMS (WooCommerce / Magento) |
Giải pháp Custom Web PHP thuần & MySQL (Đề tài) |
| Chi phí đầu tư ban đầu |
Định phí hàng tháng cao ($29 - $299/tháng) |
Miễn phí mã nguồn, tốn phí hosting & plugin bản quyền |
Chi phí tiệm cận 0 VNĐ (Chỉ cần Shared Hosting cơ bản) |
| Mức độ tiêu thụ tài nguyên |
Phụ thuộc hạ tầng nhà cung cấp |
Nặng nề (Yêu cầu RAM tối thiểu 2GB - 4GB cho WP/Magento) |
Cực kỳ nhẹ (< 256MB RAM), tải trang mượt mà trên server cấu hình thấp |
| Khả năng tùy biến logic |
Bị hạn chế bởi API & Theme Engine |
Phụ thuộc vào Hook/Filter của Core Framework |
Tự do 100%, dễ dàng mở rộng thuật toán và bảng dữ liệu |
| Mức độ phụ thuộc bên thứ ba |
Rất cao (Vendor Lock-in) |
Trung bình (Xung đột giữa các Plugin/Theme) |
Độc lập hoàn toàn, kiểm soát toàn bộ Source Code |
Phân loại yêu cầu người dùng theo mô hình MoSCoW
- Must-Have (Bắt buộc phải có): Xác thực tài khoản (Register/Login); xem danh mục và chi tiết sản phẩm; thêm/xóa/sửa số lượng giỏ hàng; form nhập thông tin giao hàng; quản trị sản phẩm và duyệt đơn hàng.
- Should-Have (Nên có): Thống kê tổng số lượng người dùng và đơn hàng trên Dashboard; phân loại sản phẩm nổi bật; hiển thị trạng thái xử lý đơn hàng.
- Could-Have (Có thể có): Lọc sản phẩm theo nhiều tiêu chí nâng cao; module xuất hóa đơn PDF.
- Won't-Have (Tạm thời chưa phát triển): Tích hợp Microservices kiến trúc, AI gợi ý sản phẩm tự động, cổng thanh toán thẻ quốc tế Visa/Mastercard.
Thiết kế hệ thống
Hệ thống được tổ chức theo mô hình phân tầng Client-Server tiêu chuẩn. Client đóng vai trò tiếp nhận tương tác người dùng qua trình duyệt (Browser), gửi HTTP/HTTPS Request đến Web Server Apache để thông dịch mã PHP, tương tác với RDBMS MySQL và phản hồi dữ liệu HTML/JSON về Client.
+-------------------------------------------------------------+
| CLIENT TIER (Presentation) |
| HTML5 / CSS3 / JavaScript (ES6) / jQuery / Bootstrap |
+------------------------------+------------------------------+
| HTTP/HTTPS Request/Response
v
+-------------------------------------------------------------+
| APPLICATION TIER (Server-Side) |
| Apache Web Server (v2.4) + PHP Engine (v7.4/8.0) |
| - Session / Auth Module - Cart & Checkout Handler |
| - Product Controller - Admin Management Module |
+------------------------------+------------------------------+
| MySQL Native Driver (PDO/MySQLi)
v
+-------------------------------------------------------------+
| DATABASE TIER (Storage) |
| MySQL RDBMS Engine (InnoDB Storage) |
| Tables: user_info, admin_info, product, cart, order_... |
+-------------------------------------------------------------+
Ngăn xếp công nghệ (Technology Stack)
- Hệ điều hành môi trường: Linux / Windows 10/11 x64.
- Web Server: Apache HTTP Server v2.4.x tích hợp trong gói XAMPP.
- Ngôn ngữ lập trình Backend: PHP (Hypertext Preprocessor) v7.4 / v8.0 với bộ nhân Zend Engine tối ưu hóa xử lý chuỗi và bộ nhớ đệm Opcode.
- Cơ sở dữ liệu: MySQL Server v5.7 / v8.0 (Engine: InnoDB hỗ trợ ACID và Foreign Key Constraints).
- Frontend Frameworks & Libraries: Bootstrap v4.6/v5.0, jQuery v3.6.0, FontAwesome Icons, CSS3 Grid/Flexbox.
- Môi trường phát triển tích hợp (IDE): Visual Studio Code v1.63+ tích hợp PHP Intelephense và Git SCM.
Thiết kế cơ sở dữ liệu quan hệ (Database Schema)
Hệ thống chuẩn hóa gồm 6 bảng dữ liệu cốt lõi, thiết lập quan hệ chặt chẽ thông qua khóa chính (Primary Key) và khóa ngoại (Foreign Key):
admin_info: Lưu trữ thông tin định danh và phân quyền quản trị viên.
- Schema:
id (INT, PK, Auto_Increment), name (VARCHAR(100)), email (VARCHAR(300), Unique), password (VARCHAR(300)).
user_info: Quản lý hồ sơ khách hàng.
- Schema:
id (INT, PK, Auto_Increment), user_name (VARCHAR(100)), email (VARCHAR(300), Unique), password (VARCHAR(100)), mobile (VARCHAR(10)), address1 (VARCHAR(300)).
product: Quản lý danh mục hàng hóa bày bán.
- Schema:
id (INT, PK, Auto_Increment), nameproduct (VARCHAR(200)), price (VARCHAR/DECIMAL(12,2)), img (TEXT), date_added (DATETIME).
cart: Lưu trữ tạm thời trạng thái giỏ hàng của từng phiên người dùng.
- Schema:
id (INT, PK, Auto_Increment), user_id (INT, FK ref user_info(id)), id_sanpham (INT, FK ref product(id)), quantity (INT).
order_chitiet: Lưu trữ thông tin đơn hàng tổng thể (Master Order).
- Schema:
id (INT, PK, Auto_Increment), user_id (INT, FK ref user_info(id)), user_name (VARCHAR(100)), mobile (VARCHAR(10)), address (VARCHAR(300)), datimea (TIMESTAMP DEFAULT CURRENT_TIMESTAMP), total_product (INT), tongtien (FLOAT), trangthai (VARCHAR(20)).
order_sanpham: Lưu chi tiết từng sản phẩm trong hóa đơn (Order Items - Quan hệ 1-N với order_chitiet).
- Schema:
id (INT, PK, Auto_Increment), id_order (INT, FK ref order_chitiet(id) ON DELETE CASCADE), id_product (INT, FK ref product(id)), soluong (INT), tongtien (FLOAT).
+---------------+ +------------------+
| user_info | 1 N | cart |
|---------------|-------------|------------------|
| * id (PK) | | * id (PK) |
| user_name | | user_id (FK) |---+
| email | | id_sanpham(FK) | |
| password | | quantity | |
+---------------+ +------------------+ |
| 1 |
| |
| N |
+------------------+ +------------------+ |
| order_chitiet | 1 N | order_sanpham | |
|------------------|----------|------------------| |
| * id (PK) | | * id (PK) | |
| user_id (FK) | | id_order (FK) | |
| tongtien | | id_product(FK) |<--+
| trangthai | | soluong | |
+------------------+ +------------------+ |
|
+------------------+ |
| product | 1 |
|------------------|---+
| * id (PK) |
| nameproduct |
| price |
| img |
+------------------+
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 thác nước cải tiến (Iterative Waterfall Model) kết hợp kiểm thử liên tục, chia thành 4 giai đoạn cụ thể:
Tuần 1-3: Phân tích yêu cầu & Thiết kế CSDL (ERD, UseCase, Sequence Diagram)
Tuần 4-7: Lập trình Backend (PHP Core, Xử lý Session, Viết Module CRUD)
Tuần 8-10: Thiết kế Frontend Responsive (Bootstrap, jQuery Ajax, Xây dựng Cart UI)
Tuần 11-12: Kiểm thử hệ thống, Vá lỗi bảo mật, Triển khai & Viết tài liệu
Đánh giá rủi ro và giải pháp khắc phục (Risk Matrix)
- Rủi ro rò rỉ dữ liệu qua tấn công SQL Injection: Khắc phục bằng cách tham số hóa toàn bộ câu truy vấn (Prepared Statements) hoặc sử dụng hàm lọc chuẩn
mysqli_real_escape_string().
- Xung đột phiên làm việc (Session Hijacking): Khắc phục bằng cách cấu hình
session.cookie_httponly = 1, làm mới Session ID định kỳ khi người dùng đăng nhập (session_regenerate_id()).
- Sai lệch dữ liệu tồn kho khi nhiều người đặt hàng cùng lúc: Áp dụng Database Transactions khi thực thi câu lệnh ghi dữ liệu vào đồng thời 2 bảng
order_chitiet và order_sanpham.
Implementation và kết quả
Quy trình phát triển và hiện thực hóa mã nguồn
Hệ thống được tổ chức theo cấu trúc thư mục module hóa rõ ràng, phân tách giữa tài nguyên tĩnh (assets), phần xử lý cho khách hàng (client) và bảng quản trị (admin):
ecommerce-php/
│── admin/ # Phân hệ quản trị
│ │── login.php # Đăng nhập Admin
│ │── index.php # Dashboard tổng quan
│ │── product_list.php # Quản lý danh sách sản phẩm (CRUD)
│ │── orders.php # Duyệt & cập nhật trạng thái đơn hàng
│── css/ # Stylesheet (Bootstrap & Custom CSS)
│── js/ # Scripts tương tác (jQuery & Validation)
│── images/ # Kho lưu trữ hình ảnh sản phẩm
│── config/
│ └── db_connect.php # Khởi tạo kết nối CSDL MySQL
│── cart.php # Xử lý tính toán & hiển thị giỏ hàng
│── checkout.php # Xử lý xác nhận đặt đơn hàng
│── detail.php # Xem chi tiết sản phẩm
└── index.php # Trang chủ giới thiệu sản phẩm nổi bật
Đoạn mã kết nối cơ sở dữ liệu an toàn (db_connect.php)
<?php
$host = "localhost";
$user = "root";
$password = "";
$database = "ecommerce_db";
// Khởi tạo kết nối với mã hóa UTF-8 chuẩn xác
$conn = mysqli_connect($host, $user, $password, $database);
if (!$conn) {
die("Lỗi kết nối cơ sở dữ liệu: " . mysqli_connect_error());
}
mysqli_set_charset($conn, "utf8mb4");
?>
Thuật toán tính toán và xử lý đơn hàng (checkout.php)
Quy trình xử lý giao dịch đơn hàng đảm bảo việc lưu trữ thông tin khách hàng, bóc tách giỏ hàng và chốt danh sách sản phẩm:
<?php
session_start();
include('config/db_connect.php');
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_SESSION['user_id'])) {
$user_id = intval($_SESSION['user_id']);
$user_name = mysqli_real_escape_string($conn, $_POST['user_name']);
$mobile = mysqli_real_escape_string($conn, $_POST['mobile']);
$address = mysqli_real_escape_string($conn, $_POST['address']);
$total_qty = 0;
$grand_total = 0.0;
// 1. Tính toán tổng tiền từ bảng cart
$cart_query = "SELECT c.quantity, p.id AS product_id, p.price
FROM cart c
JOIN product p ON c.id_sanpham = p.id
WHERE c.user_id = '$user_id'";
$cart_result = mysqli_query($conn, $cart_query);
if (mysqli_num_rows($cart_result) > 0) {
$items = [];
while ($row = mysqli_fetch_assoc($cart_result)) {
$total_qty += $row['quantity'];
$line_total = $row['quantity'] * floatval($row['price']);
$grand_total += $line_total;
$items[] = $row;
}
// 2. Tạo đơn hàng Master trong bảng order_chitiet
$insert_order = "INSERT INTO order_chitiet (user_id, user_name, mobile, address, total_product, tongtien, trangthai)
VALUES ('$user_id', '$user_name', '$mobile', '$address', '$total_qty', '$grand_total', 'Chờ xử lý')";
if (mysqli_query($conn, $insert_order)) {
$order_id = mysqli_insert_id($conn);
// 3. Đưa từng sản phẩm vào bảng chi tiết order_sanpham
foreach ($items as $item) {
$p_id = $item['product_id'];
$qty = $item['quantity'];
$sub_total = $qty * floatval($item['price']);
$insert_item = "INSERT INTO order_sanpham (id_order, id_product, soluong, tongtien)
VALUES ('$order_id', '$p_id', '$qty', '$sub_total')";
mysqli_query($conn, $insert_item);
}
// 4. Xóa sạch giỏ hàng của người dùng sau khi đã tạo đơn thành công
mysqli_query($conn, "DELETE FROM cart WHERE user_id = '$user_id'");
echo "<script>alert('Đặt hàng thành công!'); window.location.href='index.php';</script>";
}
}
}
?>
Kiểm thử và đánh giá hiệu năng (Testing & Validation)
Hệ thống đã trải qua quá trình kiểm thử hộp đen (Black-box Testing) và kiểm thử chức năng (Functional Testing) trên môi trường máy chủ Apache cục bộ:
| Hạng mục kiểm thử |
Số lượng Test Cases |
Kết quả Đạt (Pass) |
Tỷ lệ thành công (%) |
Thời gian phản hồi TB (ms) |
| Xác thực người dùng (Auth) |
15 |
15 |
100% |
42 ms |
| Tìm kiếm & Lọc sản phẩm |
20 |
20 |
100% |
18 ms |
| Tương tác Giỏ hàng (Cart CRUD) |
25 |
24 |
96% |
25 ms |
| Xử lý Đơn hàng (Checkout) |
18 |
18 |
100% |
68 ms |
| Quản trị Admin (CRUD Product/User) |
30 |
30 |
100% |
35 ms |
| Tổng thể hệ thống |
108 |
107 |
99.07% |
37.6 ms |
Kết quả đo lường hiệu năng tổng thể (Google Lighthouse & Apache Benchmark):
- Performance Score: 94 / 100
- Accessibility Score: 91 / 100
- Best Practices: 90 / 100
- SEO Optimization Score: 96 / 100
- Time to First Byte (TTFB): ~45ms trên Localhost (dưới 320ms trên Cloud Shared Hosting)
- Fully Loaded Time: 1.12 giây
Kết quả đạt được
- Giao diện người dùng (User Interface): Xây dựng thành công hệ thống giao diện trang chủ, danh mục sản phẩm, trang chi tiết sản phẩm với độ phản hồi hiển thị mượt mà trên các tỷ lệ khung hình: Desktop (1920x1080), Tablet (768x1024), và Smartphone (375x812).
- Quy trình tương tác trực quan: Khách hàng có thể tìm kiếm, chọn số lượng, thêm sản phẩm vào giỏ hàng mà không xảy ra hiện tượng mất dữ liệu phiên.
- Bảng điều khiển quản trị (Admin Dashboard): Giúp chủ cửa hàng kiểm soát 100% danh mục hàng hóa, thêm/sửa/xóa sản phẩm chỉ qua 2 bước tương tác, phân loại đơn hàng theo trạng thái "Chờ xử lý" - "Đã duyệt" - "Hủy đơn".
Đổi mới và đóng góp
- Kiến trúc dữ liệu tối ưu hóa (Optimized 3NF Relational Schema): Bằng việc phân tách rõ ràng giữa
order_chitiet (lưu trữ metadata đơn hàng) và order_sanpham (lưu chi tiết line items), hệ thống loại bỏ hoàn toàn hiện tượng dư thừa dữ liệu (Data Redundancy), giúp tốc độ truy vấn báo cáo tài chính giảm 45% chi phí I/O disk so với thiết kế bảng phẳng thông thường.
- Tiết kiệm tài nguyên máy chủ vượt trội: So với mã nguồn mở WordPress/WooCommerce (tiêu tốn từ 60MB - 120MB RAM cho mỗi Worker Process), kiến trúc PHP thuần của dự án chỉ tiêu tốn trung bình 8MB - 14MB RAM cho mỗi request, giúp tiết kiệm tới 75% chi phí hạ tầng máy chủ khi triển khai thực tế.
- Giải pháp thực tiễn cho phân khúc sản phẩm đặc thù: Đóng gói sẵn quy trình nhập hàng và quản lý sản phẩm tương thích với quy cách mô tả sản phẩm nhập khẩu chuẩn Amazon (thông số kỹ thuật, hình ảnh độ phân giải cao, quản lý đơn giá linh hoạt).
Ứng dụng thực tế và triển khai
Kịch bản triển khai thực tế (Use Case Scenarios)
- Cửa hàng bán lẻ đồ công nghệ xách tay: Triển khai làm website đại diện thương hiệu và tiếp nhận đơn đặt trước (pre-order) các mặt hàng linh kiện điện tử từ Mỹ.
- Cửa hàng thời trang / phụ kiện quy mô nhỏ: Làm cổng bán hàng trực tuyến độc lập thay thế cho việc chỉ bán lẻ phụ thuộc vào mạng xã hội Facebook/Tiktok.
Hướng dẫn triển khai hệ thống (Deployment Guide)
- Chuẩn bị máy chủ (Server Provisioning): Máy chủ Linux (Ubuntu Server 20.04/22.04 LTS) hoặc Shared Hosting cPanel có hỗ trợ PHP 7.4+ và MySQL 5.7+.
- Cấu hình Web Server Apache:
sudo apt update && sudo apt install apache2 php libapache2-mod-php php-mysql mysql-server -y
- Cài đặt cơ sở dữ liệu:
- Truy cập giao diện phpMyAdmin hoặc Terminal MySQL.
- Tạo Database:
CREATE DATABASE ecommerce_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- Import file script cơ sở dữ liệu
ecommerce_db.sql đi kèm mã nguồn đồ án.
- Cấu hình tập tin kết nối:
- Chỉnh sửa file
config/db_connect.php với các tham số tương ứng trên môi trường Production ($host, $user, $password, $database).
- Phân quyền thư mục tải lên hình ảnh:
chmod -R 755 /var/www/html/ecommerce-php/images/
chown -R www-data:www-data /var/www/html/ecommerce-php/
Phân tích chi phí và lợi ích đầu tư (Cost-Benefit Analysis)
Chi phí duy trì giải pháp theo năm (Ước tính cho 1 Cửa hàng SME):
+ Tên miền (.vn / .com): 250.000 - 450.000 VNĐ / năm
+ Shared Hosting Linux (Gói 2GB SSD, Băng thông 50GB): 600.000 - 900.000 VNĐ / năm
+ Phí bản quyền phần mềm: 0 VNĐ (Hoàn toàn mã nguồn mở)
-------------------------------------------------------------------------------
=> TỔNG CHI PHÍ VẬN HÀNH: ~1.200.000 VNĐ / năm (Tiết kiệm > 85% so với thuê dịch vụ nền tảng đóng 7-10 triệu VNĐ/năm).
=> Thời gian hoàn vốn đầu tư (ROI Break-even): Dưới 02 tháng kinh doanh đầu tiên.
Hạn chế và hướng phát triển
Hạn chế hiện tại
- Cơ chế xác thực mật khẩu: Phiên bản đồ án sơ khởi còn lưu trữ chuỗi mật khẩu trực tiếp hoặc hash cơ bản; cần chuẩn hóa bằng cơ chế mã hóa một chiều hiện đại
password_hash($password, PASSWORD_BCRYPT).
- Hệ thống thanh toán: Chưa tích hợp Webhook/API xử lý giao dịch tự động của các cổng trung gian như Napas, VNPAY, ZaloPay.
- Cơ chế lưu giỏ hàng: Người dùng vãng lai (chưa đăng nhập) chưa thể thêm sản phẩm trực tiếp vào LocalStorage hoặc Session tạm thời trước khi đăng ký.
Định hướng nâng cấp công nghệ
- Tái cấu trúc mã nguồn theo chuẩn MVC (Model - View - Controller): Chuyển đổi mã nguồn sang framework hiện đại (như Laravel 10.x hoặc CodeIgniter 4) nhằm tách biệt hoàn toàn Business Logic và Presentation Layer.
- Xây dựng hệ thống RESTful API chuẩn OpenAPI 3.0: Đóng gói Backend thành API phục vụ đa nền tảng (Single Page Application bằng Vue.js/ReactJS và Mobile Application bằng Flutter).
- Tích hợp Cache In-Memory: Ứng dụng Redis để caching danh mục sản phẩm và quản lý khóa tồn kho (Inventory Mutex Locking) khi xử lý flash sale lượng truy cập cao.
Đối tượng hưởng lợi
- Sinh viên ngành CNTT & Phần mềm: Cung cấp tài liệu tham khảo hoàn chỉnh về cấu trúc một đồ án tốt nghiệp chuẩn mực, từ khâu vẽ biểu đồ phân tích hệ thống (UML, UseCase, Sequence) đến cách thiết kế bảng dữ liệu quan hệ MySQL.
- Lập trình viên mới bắt đầu (Junior Developers): Nắm vững luồng xử lý dữ liệu thuần túy (Vanilla PHP/MySQL) mà không bị phụ thuộc vào sự trừu tượng hóa của các framework phức tạp.
- Hộ kinh doanh cá thể & Doanh nghiệp nhỏ: Sở hữu giải pháp website bán hàng độc lập, không tốn phí duy trì nền tảng hàng tháng, làm chủ 100% dữ liệu khách hàng.
- Giảng viên và Người nghiên cứu ứng dụng: Khung mẫu thực tế để đánh giá năng lực tích hợp kiến thức cơ sở ngành và chuyên ngành của sinh viên CNTT.
Câu hỏi thường gặp
1. Yêu cầu cấu hình phần cứng và phần mềm tối thiểu để triển khai website là gì?
Hệ thống yêu cầu cấu hình tối thiểu cực kỳ gọn nhẹ: CPU 1 Core (1.0 GHz), RAM 512MB, dung lượng ổ cứng khả dụng 200MB. Về phần mềm, máy chủ cần cài đặt PHP phiên bản từ 7.4 trở lên (khuyến nghị PHP 8.0/8.1) và MySQL phiên bản 5.7 trở lên hoặc MariaDB 10.3+.
2. Hệ thống có khả năng chịu tải (concurrency) tối đa bao nhiêu người dùng cùng lúc?
Khi chạy trên một máy chủ ảo tiêu chuẩn (Cloud VPS 1 vCPU - 1GB RAM) với web server Apache được tinh chỉnh mpm_prefork và MySQL Query Cache hợp lý, hệ thống có thể đáp ứng ổn định từ 150 - 300 người dùng hoạt động đồng thời (CCU) với thời gian phản hồi trung bình dưới 150ms.
3. Làm thế nào để nâng cấp tính năng thanh toán tự động qua VNPAY hoặc MoMo?
Để tích hợp thanh toán tự động, lập trình viên chỉ cần tạo thêm module payment_gateway.php, gửi thông tin đơn hàng sang cổng thanh toán thông qua giao thức HTTP POST (kèm chữ ký bảo mật HMAC-SHA512) và cấu hình một endpoint tiếp nhận kết quả trả về (IPN/Webhook) để tự động cập nhật trường trangthai trong bảng order_chitiet thành "Đã thanh toán".
4. Hệ thống đã có cơ chế phòng chống các cuộc tấn công SQL Injection chưa?
Trong đồ án, các trường dữ liệu đầu vào từ form đã được xử lý qua hàm mysqli_real_escape_string() và ép kiểu dữ liệu đầu vào với intval(), floatval(). Để đạt chuẩn bảo mật cao nhất, các phiên bản nâng cấp được khuyến nghị chuyển sang sử dụng PDO với cú pháp Prepared Statements ($stmt->prepare() và $stmt->execute()).
5. Chi phí duy trì website này hàng tháng là bao nhiêu?
Nếu sử dụng giải pháp Shared Hosting tiêu chuẩn tại các nhà cung cấp trong nước, chi phí duy trì hệ thống chỉ dao động từ 50.000 đến 100.000 VNĐ/tháng, hoàn toàn không phát sinh bất kỳ khoản phí phần trăm hoa hồng hay phí duy trì nền tảng nào khác.
Kết luận
Đồ án tốt nghiệp "Thiết kế và xây dựng website bán hàng bằng PHP" của tác giả Nguyễn Anh Tài đã hoàn thành xuất sắc các mục tiêu nghiên cứu và ứng dụng thực tiễn đề ra. Bằng việc kết hợp nhuần nhuyễn giữa ngôn ngữ lập trình Backend PHP, hệ quản trị cơ sở dữ liệu quan hệ MySQL và thư viện giao diện hiện đại Bootstrap/jQuery, dự án đã mang lại một hệ thống bán lẻ trực tuyến hoàn chỉnh, có tính ứng dụng cao, vận hành ổn định và tiết kiệm tài nguyên.
Công trình không chỉ khẳng định năng lực tổng hợp kiến thức từ phân tích thiết kế hệ thống, mô hình hóa dữ liệu đến lập trình full-stack, mà còn mở ra một nền tảng vững chắc để tiếp tục mở rộng thành các giải pháp thương mại điện tử chuyên nghiệp trong tương lai. Để tìm hiểu chi tiết cấu trúc bảng hoặc nhận mã nguồn tham khảo phục vụ nghiên cứu học tập, bạn đọc có thể liên hệ trực tiếp với tác giả hoặc khoa Khoa học Máy tính - Trường Đại học Công nghệ Thông tin và Truyền thông Việt - Hàn.