Bối cảnh và vấn đề nghiên cứu
Trong sự phát triển chung của nền kinh tế và khoa học kỹ thuật, công nghệ thông tin đã trở thành công cụ đắc lực hỗ trợ con người trong công tác quản lý, lưu trữ, phân tích và xử lý thông tin. Trong lĩnh vực phần mềm, các ứng dụng thường được xây dựng theo ba mô hình chính: mô hình máy đơn (standalone), mô hình máy khách/máy chủ (client/server) và mô hình dựa trên nền tảng web (web-based). Trong đó, mô hình web-based sở hữu ưu thế vượt trội nhờ khả năng cho phép người dùng truy cập và sử dụng dịch vụ từ bất kỳ đâu thông qua kết nối mạng Internet, phục vụ đa dạng các lĩnh vực như quản lý nhân sự, thương mại điện tử, y tế, giáo dục - đào tạo và dịch vụ giải trí.
Xuất phát từ bối cảnh thực tiễn đó, đồ án tốt nghiệp ngành Công nghệ thông tin với đề tài "Xây dựng Website xem phim trực tuyến" được tác giả Nguyễn Nam Khánh (sinh viên lớp CT1001, dưới sự hướng dẫn của thầy Đỗ Văn Chiểu tại Hải Phòng, tháng 6 năm 2010) thực hiện nhằm mục đích phát triển một hệ thống cung cấp dịch vụ giải trí đa phương tiện trên nền tảng web.
Mục tiêu và nhiệm vụ nghiên cứu của đề tài được xác định cụ thể như sau:
- Nghiên cứu tổng quan về mạng Internet, bộ giao thức TCP/IP, dịch vụ World Wide Web (WWW) và các công nghệ phát triển ứng dụng web động.
- Tìm hiểu và làm chủ ngôn ngữ lập trình PHP, hệ quản trị cơ sở dữ liệu MySQL cùng môi trường máy chủ tích hợp AppServ.
- Phân tích yêu cầu nghiệp vụ, xác định các nhóm đối tượng người dùng và xây dựng các mô hình phân tích chức năng, mô hình luồng dữ liệu cho hệ thống website xem phim trực tuyến.
- Thiết kế cơ sở dữ liệu quan hệ và kiến trúc giao diện tương tác người dùng.
- Hiện thực hóa mã nguồn, lắp ghép các thành phần mã nguồn mở và tiến hành thử nghiệm vận hành hệ thống.
Đối tượng và phạm vi nghiên cứu của đồ án:
- Đối tượng nghiên cứu: Quy trình phân tích, thiết kế và hiện thực hóa một hệ thống website xem phim trực tuyến sử dụng ngôn ngữ PHP kết hợp cơ sở dữ liệu MySQL.
- Phạm vi không gian: Hệ thống được xây dựng và triển khai thử nghiệm trên môi trường mạng cục bộ (LAN).
- Phạm vi thời gian: Đồ án được hoàn thành và nghiệm thu vào tháng 6 năm 2010.
Cơ sở lý thuyết và phương pháp
Về cơ sở lý thuyết, đồ án tổng hợp các nền tảng công nghệ web và phần mềm mã nguồn mở bao gồm:
- Mạng máy tính và dịch vụ web: Tìm hiểu kiến trúc mạng LAN, mạng WAN, bộ giao thức chuẩn TCP/IP và dịch vụ WWW hoạt động như một siêu tài liệu đa phương tiện (multimedia).
- Công nghệ hỗ trợ phát triển giao diện và kịch bản web: Khảo sát ứng dụng của công nghệ Flash (tạo hình ảnh động), các ngôn ngữ kịch bản phía máy khách (JavaScript, Java Applet, DHTML, VBScript) và các ngôn ngữ xử lý phía máy chủ (Java, PHP, CGI).
- Ngôn ngữ lập trình PHP (Hypertext Preprocessor): Ngôn ngữ script phía máy chủ được khởi xướng bởi Rasmus Lerdorf năm 1994 (phiên bản PHP 5 phát hành tháng 7/2004), sở hữu đặc tính mã nguồn mở, miễn phí, đa nền tảng (chạy trên Windows, Linux, Unix) và hỗ trợ kết nối với nhiều hệ quản trị cơ sở dữ liệu (MySQL, MS SQL Server 2000, Oracle, PostgreSQL, DB2 qua ODBC).
- Hệ quản trị cơ sở dữ liệu MySQL: Hệ quản trị cơ sở dữ liệu quan hệ nguồn mở, hỗ trợ công cụ lưu trữ InnoDB, tương thích tốt với máy chủ Apache và ngôn ngữ PHP để xử lý các truy vấn bảng dữ liệu.
- Phần mềm mã nguồn mở (Open-source software): Phân tích đặc điểm, vòng đời phát triển của phần mềm nguồn mở với các ưu điểm về tiết kiệm chi phí, tính đa dạng mô-đun và tính minh bạch trong kiểm soát, sửa đổi lỗi (bug).
Phương pháp nghiên cứu và phát triển được tác giả áp dụng bao gồm:
- Phương pháp phân tích và thiết kế có cấu trúc: Sử dụng các công cụ mô hình hóa nghiệp vụ bao gồm Biểu đồ ngữ cảnh hệ thống, Biểu đồ phân rã chức năng (BFD), Ma trận thực thể - chức năng (CRUD) và Biểu đồ luồng dữ liệu (DFD) phân rã từ cấp 1.0 đến cấp 2.3.
- Phương pháp mô hình hóa dữ liệu: Thiết kế lược đồ cơ sở dữ liệu quan hệ, chuẩn hóa các trường dữ liệu, xác định khóa chính (Primary Key), các thuộc tính tự tăng (Auto_Increment) và thiết lập quan hệ giữa các bảng.
- Phương pháp thực nghiệm: Cài đặt gói tích hợp AppServ-Win-2.8 trên hệ điều hành Windows để cấu hình môi trường máy chủ cục bộ (Apache, PHP, MySQL) và kiểm thử các tính năng thực tế.
Nguồn dữ liệu của đồ án là các dữ liệu danh mục phim, đường dẫn tập phim (episode), banner quảng cáo, thông tin tài khoản người dùng và các tham số cấu hình hệ thống được khởi tạo trực tiếp trong cơ sở dữ liệu MySQL.
Thiết kế và triển khai
Hệ thống website xem phim trực tuyến được thiết kế theo kiến trúc ứng dụng web-based với cấu hình công nghệ và cơ sở dữ liệu cụ thể như sau:
Môi trường triển khai máy chủ
Hệ thống sử dụng gói phần mềm tích hợp AppServ-Win-2.8 trên hệ điều hành Windows:
- Web Server: Apache lắng nghe tại cổng mặc định 80 (hoặc cổng 81 trong trường hợp máy chủ đã kích hoạt dịch vụ IIS).
- Server Name:
localhost.
- Hệ quản trị cơ sở dữ liệu: MySQL kích hoạt chế độ
Enable InnoDB để xử lý giao dịch dữ liệu, tài khoản quản trị root.
- Tập hàm kết nối PHP - MySQL cốt lõi được sử dụng:
mysql_connect(), mysql_select_db(), mysql_query(), mysql_num_rows(), mysql_fetch_array(), mysql_close().
Thiết kế cơ sở dữ liệu
Cơ sở dữ liệu MySQL của hệ thống được thiết kế gồm 11 bảng dữ liệu phục vụ lưu trữ và vận hành:
| Tên bảng dữ liệu |
Chức năng lưu trữ |
Các trường thông tin chính (Field & Type) |
table_ads |
Lưu trữ banner quảng cáo |
ads_id (Int 5), ads_name (varchar 250), ads_url (varchar 250), ads_img (varchar 250) |
table_cat |
Lưu trữ danh mục/thể loại phim |
cat_id (Int 3), cat_name_ascii (varchar 120), cat_name (varchar 120), cat_order (Int 3) |
table_comment |
Lưu ý kiến bình luận của người dùng |
comment_id (Int 5), comment_film (Int 5), comment_poster (Text), comment_content (Text), comment_time (varchar 12) |
table_config |
Lưu cấu hình hệ thống website |
Cf_id (Int 10), Cf_web_name (varchar 250), Cf_web_link (varchar 250), Cf_web_email (varchar 250), Cf_web_keywords (varchar 250), Cf_site_off (Int 1), Cf_announcement (Text), Cf_per_page (Int 10), Cf_skin_default (Text), Cf_permission (Int 10), Cf_current_day (Int 10) |
table_episode |
Lưu trữ các phần/tập của bộ phim |
episode_id (Int 10), episode_name (varchar 120), episode_film (Int 5), episode_url (varchar 250), episode_local (tinyint 1), episode_type (Int 1), episode_broken (tinyint 1) |
table_film |
Lưu trữ thông tin chi tiết của phim |
Film_id (Int 10), Film_name (Text), Film_name_real (Text), Film_name_ascii (Text), Film_actor (Text), Film_img (Text), Film_info (Text), Film_viewed (int 10), Film_viewed_day (int 10), Film_cat (int 5), Film_director (Text), Film_time (Text), Film_year (Text), Film_area (Text), Film_broken (int 5), Film_rating (int 11), Film_rating_total (int 11), Film_rate (int 11) |
table_new |
Lưu trữ tin tức trên website |
News_id (int 10), News_name (varchar 120), News_name_ascii (varchar 120) |
table_request |
Lưu trữ yêu cầu gửi từ người dùng |
request_id (int 10), request_name (Text), request_email (Text) |
table_skin |
Lưu trữ giao diện (skin) website |
Skin_id (int 3), Skin_name (varchar 20), Skin_folder (varchar 250), Skin_order (int 3) |
table_trailer |
Lưu trữ trailer giới thiệu phim |
Trailer_id (Int 10), Trailer_name (Text), Trailer_img (Text), Trailer_url (varchar 250) |
table_user |
Lưu trữ tài khoản người dùng |
User_id (int 10), User_name (varchar 50), User_password (varchar 50), User_level (int 1) |
Thiết kế bố cục giao diện (Trang chủ)
Giao diện trang chủ được bố cục thành ba khu vực chức năng chính:
- Phần Header (Đầu trang): Tích hợp cụm đăng nhập (Log In), đăng ký (Sign Up), tùy chọn ngôn ngữ (Language), thanh công cụ tìm kiếm phim (hỗ trợ nhập tiếng Việt có dấu), khu vực hiển thị banner quảng cáo và trailer phim sắp chiếu.
- Phần Body (Thân trang):
- Khung menu bên: Phân cấp danh mục Phim bộ (Hồng Kông, Hàn Quốc, Đài Loan, Trung Quốc, Nhật Bản) và Phim lẻ (Hành động, Tình cảm, Phim hài, Kiếm hiệp, Phim Mĩ, Hàn Quốc, Nhật Bản, Việt Nam).
- Khung hiển thị trung tâm: Danh sách phim mới cập nhật, danh sách phim được xem nhiều nhất (dựa trên trường
film_viewed), danh sách phim được download nhiều nhất và phim ngẫu nhiên.
- Khu vực liên kết phần mềm hỗ trợ phát đa phương tiện: K-Lite Codec Pack, FLV Player Free, RealPlayer.
- Phần Footer (Chân trang): Thông tin bản quyền (
Bản quyền © 2009, websitephim.com), email liên hệ của quản trị viên và thông số chuẩn hiển thị (tối ưu hóa trên trình duyệt Internet Explorer 6 trở lên với độ phân giải màn hình 1280x1024).
// Minh họa cấu trúc kết nối cơ sở dữ liệu và truy vấn được trình bày trong đồ án
$conn = mysql_connect("localhost", "root", "root") or die("can't connect database");
mysql_select_db("demo_mysql", $conn);
$sql = "select * from user";
$query = mysql_query($sql);
while ($row = mysql_fetch_array($query)) {
// Xử lý dữ liệu xuất ra trình duyệt
}
mysql_close($conn);
Nội dung chính theo từng chương
CHƯƠNG 1: GIỚI THIỆU
Chương 1 hệ thống hóa các kiến thức nền tảng về môi trường mạng và công nghệ phát triển web:
- Lịch sử hình thành Internet từ những năm 60-70, sự khác biệt giữa mạng cục bộ (LAN) và mạng diện rộng (WAN), vai trò của giao thức TCP/IP và dịch vụ WWW như một ngân hàng dữ liệu đa phương tiện.
- Phân loại các công cụ công nghệ web: Flash, JavaScript, Java Applet, DHTML, VBScript, Java, PHP, CGI và cơ sở dữ liệu MySQL, DBF.
- Tổng quan về ngôn ngữ PHP, lịch sử ra đời năm 1994 và phiên bản PHP 5 (2004). Hướng dẫn từng bước cài đặt gói AppServ-Win-2.8, cấu hình
Server Name, Port, mật khẩu root và kích hoạt chế độ InnoDB.
- Khái quát cú pháp PHP: 4 dạng thẻ mở/đóng mã nguồn, câu lệnh xuất dữ liệu (
echo, printf), toán tử nối chuỗi (.), quy tắc đặt tên biến ($), định nghĩa hằng số (define), 6 kiểu dữ liệu cơ bản và hàm gettype().
- Cú pháp cơ sở dữ liệu MySQL: Các câu lệnh DDL/DML (
CREATE DATABASE, USE, CREATE TABLE, ALTER TABLE, INSERT INTO, SELECT, WHERE, ORDER BY ASC/DESC, LIMIT, UPDATE, DELETE) cùng 6 hàm PHP chuẩn tương tác với MySQL.
- Khái niệm và ưu thế của phần mềm mã nguồn mở (Open-source software): Phân tích chu kỳ sống từ phiên bản thử nghiệm đến hoàn thiện, tính chất cấu trúc mở dạng module và quy trình kiểm soát lỗi minh bạch trong cộng đồng.
CHƯƠNG 2: PHÂN TÍCH HỆ THỐNG WEBSITE XEM PHIM TUYẾN
Chương 2 tập trung phân tích nghiệp vụ và thiết kế chi tiết hệ thống:
- Phân loại 3 nhóm người dùng trong hệ thống:
- Người dùng không có tài khoản (Khách vãng lai): Thực hiện chức năng tìm kiếm phim (theo tên phim hoặc theo chữ cái đầu tiên) và xem phim trực tuyến.
- Người dùng có tài khoản (Thành viên): Sử dụng đầy đủ chức năng xem phim, tìm kiếm, đăng bình luận (comment), tham gia diễn đàn trao đổi, tải (download) phim và gửi yêu cầu đăng tải phim mới (yêu cầu post phim). Hệ thống tích hợp cơ chế tự động đăng xuất sau 10 phút nếu người dùng đóng trình duyệt mà không thoát tài khoản.
- Người dùng hệ thống (Admin): Thực hiện quyền quản trị nội dung (xóa phim không phù hợp, thay đổi banner quảng cáo, kiểm duyệt xóa comment vi phạm) và quản trị người dùng (kiểm tra duyệt đăng ký tài khoản mới, phân quyền, cấp quyền và xóa tài khoản vi phạm nội quy diễn đàn).
- Mô hình hóa nghiệp vụ: Xây dựng Biểu đồ ngữ cảnh (Hình 2-1), Biểu đồ phân rã chức năng (Hình 2-2), Ma trận thực thể chức năng (CRUD) ánh xạ 11 thực thể dữ liệu với các nghiệp vụ (Xem phim, Tìm kiếm, Quản trị hệ thống) và hệ thống Biểu đồ luồng dữ liệu (DFD) từ mức 1.0 đến mức 2.3 (gồm các tiến trình Tìm kiếm D1, Yêu cầu post phim D2, Quản lý người dùng D3, Quản lý nội dung D4).
- Thiết kế chi tiết cấu trúc 11 bảng dữ liệu vật lý trong MySQL và thiết kế cấu trúc giao diện trang chủ website (Hình 2-8).
CHƯƠNG 3: HỆ THỐNG THỬ NGHIỆM
Chương 3 trình bày việc hiện thực hóa và kiểm thử hệ thống:
- Giới thiệu giao diện trang chủ thực tế của website được xây dựng bằng ngôn ngữ PHP, hệ quản trị MySQL và kết hợp một số đoạn mã nguồn mở (Hình 3-1).
- Đặc tả chi tiết các khối chức năng trên giao diện phần Header: Phân hệ đăng nhập và đăng ký thành viên, công cụ tìm kiếm nhanh phim theo tiêu đề, không gian bố trí banner quảng cáo cho các đơn vị liên kết và khu vực trình chiếu trailer các phim sắp công chiếu.
- Đánh giá khả năng hoạt động bước đầu của hệ thống xem phim trực tuyến trên môi trường mạng cục bộ (LAN).
Kết quả và đóng góp
Đồ án ghi nhận các kết quả thực nghiệm và giải pháp cụ thể:
- Hoàn thành thiết kế và cài đặt hệ thống website xem phim trực tuyến hoàn chỉnh trên nền tảng web-based, sử dụng mã nguồn PHP kết hợp cơ sở dữ liệu quan hệ MySQL.
- Thiết kế hoàn chỉnh cấu trúc cơ sở dữ liệu gồm 11 bảng dữ liệu vật lý, chuẩn hóa các trường thông tin phục vụ lưu trữ đa phương tiện, quản trị nội dung và tương tác người dùng.
- Đề xuất giải pháp lưu trữ dữ liệu phim dung lượng lớn thông qua bảng
table_episode: chia nhỏ bộ phim thành các phân đoạn/tập phim kèm đường dẫn URL (episode_url), vị trí lưu trữ (episode_local) và trạng thái báo lỗi liên kết (episode_broken).
- Xây dựng cơ chế quản lý phiên làm việc với tính năng tự động đăng xuất tài khoản sau 10 phút khi người dùng ngắt trang web đột ngột mà không đăng xuất thủ công.
- Tích hợp liên kết điều hướng các phần mềm giải mã và trình phát video chuyên dụng (K-Lite Codec Pack, FLV Player Free, RealPlayer) giúp người dùng xử lý các định dạng video đa phương tiện trên trình duyệt.
- Thử nghiệm thành công hệ thống trên môi trường mạng cục bộ (LAN), đảm bảo các tính năng đăng ký, đăng nhập, tìm kiếm phim, bình luận và quản trị hoạt động ổn định.
Hạn chế và hướng nghiên cứu tiếp
Hạn chế của đồ án:
- Môi trường thử nghiệm mới chỉ dừng lại ở phạm vi mạng cục bộ (LAN), chưa được triển khai và đánh giá tải thực tế trên môi trường Internet diện rộng.
- Việc phát video trên website còn phụ thuộc vào các gói codec và phần mềm giải mã cài đặt cục bộ trên máy người dùng (như K-Lite Codec Pack, FLV Player).
- Thiết kế giao diện và định dạng hiển thị được xây dựng tương thích tối ưu với các chuẩn công nghệ thời điểm thực hiện (trình duyệt Internet Explorer 6 trở lên, độ phân giải màn hình 1280x1024).
Hướng nghiên cứu và phát triển tiếp:
- Đưa hệ thống website lên môi trường Internet công cộng với tên miền và máy chủ lưu trữ trực tuyến.
- Mở rộng, nâng cấp các tính năng quản trị nâng cao cho hệ thống quản lý nội dung (CMS).
- Cải tiến trình phát video tích hợp trực tiếp trên nền web, hạn chế sự phụ thuộc vào các phần mềm hỗ trợ bên ngoài và tối ưu hóa tính tương thích trên nhiều trình duyệt hiện đại.
Giá trị tham khảo
Tài liệu đồ án mang lại giá trị tham khảo thiết thực cho:
- Sinh viên chuyên ngành Công nghệ thông tin, Kỹ thuật phần mềm và Hệ thống thông tin đang thực hiện đồ án môn học hoặc khóa luận tốt nghiệp về lập trình web với ngăn xếp công nghệ kinh điển LAMP/WAMP (Windows, Apache, MySQL, PHP).
- Người học cần tham khảo quy trình phân tích và thiết kế hệ thống thông tin theo phương pháp cấu trúc truyền thống: từ biểu đồ ngữ cảnh, biểu đồ phân rã chức năng (BFD), ma trận thực thể - chức năng (CRUD) đến biểu đồ luồng dữ liệu (DFD) nhiều cấp độ.
- Các nhà phát triển muốn tham khảo cấu trúc thiết kế cơ sở dữ liệu quan hệ mẫu (11 bảng) cho ứng dụng quản lý, phân phối nội dung truyền thông và phim ảnh trực tuyến.
Câu hỏi thường gặp
-
Hệ thống website xem phim trực tuyến trong đồ án được xây dựng dựa trên những công nghệ và môi trường máy chủ nào?
Hệ thống sử dụng ngôn ngữ lập trình kịch bản PHP (phiên bản PHP 5), hệ quản trị cơ sở dữ liệu MySQL (bật chế độ InnoDB) và được triển khai thử nghiệm trên môi trường máy chủ cục bộ thông qua gói phần mềm tích hợp AppServ-Win-2.8 (gồm Apache Web Server, PHP và MySQL) chạy trên hệ điều hành Windows.
-
Hệ thống phân quyền người dùng như thế nào và các chức năng cụ thể của từng nhóm là gì?
Hệ thống chia làm ba nhóm người dùng:
- Người dùng không có tài khoản: Chỉ được tìm kiếm phim (theo tên hoặc chữ cái đầu) và xem phim.
- Người dùng có tài khoản: Được xem phim, tìm kiếm, bình luận (comment), tải phim (download), tham gia diễn đàn và gửi yêu cầu đăng phim mới (yêu cầu post phim).
- Admin: Quản trị nội dung (xóa phim không phù hợp, thay đổi banner quảng cáo, xóa comment vi phạm) và quản trị người dùng (kiểm duyệt đăng ký, cấp/phân quyền và xóa tài khoản vi phạm).
-
Cơ sở dữ liệu của website gồm những bảng nào và đồ án giải quyết vấn đề lưu trữ các bộ phim có dung lượng lớn ra sao?
Cơ sở dữ liệu gồm 11 bảng: table_ads, table_cat, table_comment, table_config, table_episode, table_film, table_new, table_request, table_skin, table_trailer, table_user. Do kích thước tệp phim lớn, hệ thống thiết kế bảng table_episode để chia nhỏ bộ phim thành các phần/tập, quản lý qua mã tập (episode_id), số tập (episode_film), đường dẫn lưu trữ (episode_url), vị trí (episode_local) và trạng thái lỗi (episode_broken).
-
Hệ thống có cơ chế bảo mật phiên làm việc như thế nào khi người dùng không chủ động đăng xuất?
Theo đặc tả quy trình nghiệp vụ trong đồ án, nếu người dùng đã đăng nhập vào hệ thống mà trực tiếp tắt trang web mà không bấm nút đăng xuất (logout), hệ thống sẽ kích hoạt cơ chế tự động đăng xuất tài khoản của người dùng đó sau khoảng thời gian 10 phút.
-
Giao diện trang web được khuyến nghị hiển thị tối ưu trong điều kiện môi trường nào và hỗ trợ các công cụ phát phim nào?
Giao diện website được thiết kế hiển thị tốt nhất trên trình duyệt Internet Explorer từ phiên bản IE 6 trở lên với độ phân giải màn hình 1280x1024; đồng thời website tích hợp liên kết tải các phần mềm hỗ trợ phát video gồm K-Lite Codec Pack, FLV Player Free và RealPlayer.
Kết luận
Đồ án tốt nghiệp "Xây dựng Website xem phim trực tuyến" của tác giả Nguyễn Nam Khánh đã hoàn thành mục tiêu xây dựng một ứng dụng web-based phục vụ nhu cầu giải trí đa phương tiện thông qua ngôn ngữ PHP và cơ sở dữ liệu MySQL. Tác giả đã thực hiện đầy đủ quy trình phân tích thiết kế hệ thống theo phương pháp cấu trúc, xây dựng lược đồ cơ sở dữ liệu 11 bảng và thiết kế giao diện phân khu chức năng rõ ràng. Kết quả thử nghiệm trên mạng cục bộ (LAN) chứng minh tính khả thi của mô hình và cung cấp tài liệu tham khảo có giá trị học thuật về ứng dụng công nghệ mã nguồn mở trong phát triển phần mềm web.