Tải bản đầy đủ (.doc) (27 trang)

Báo cáo thực tập xây dựng website tin tức PHP MySQL

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.82 MB, 27 trang )

BAN CƠ YẾU CHÍNH PHỦ
HỌC VIỆN KỸ THUẬT MẬT MÃ
-------------------

THỰC TẬP CƠ SỞ
XÂY DỰNG WEBSITE TIN TỨC PHP & MySQL

Khoa: An toàn thông tin
Chuyên ngành: An toàn thông tin

Sinh viên thực hiện:
Nguyễn Văn Quang Hưng
Nguyễn Xuân Hưng
Nguyễn Quang Hưng
Lớp: AT13I
Người hướng dẫn:
Lê Đức Thuận
Khoa Công nghệ thông tin – Học viện Kỹ thuật mật mã

Hà Nội, 2019


MỤC LỤC
Hà Nội, 2019................................................................................................................................................1
Mục lục........................................................................................................................................................2
LỜI MỞ ĐẦU................................................................................................................................................1
KẾT LUẬN...................................................................................................................................................24


LỜI MỞ ĐẦU
Ngày nay, cùng với sự phát triển của Khoa học Công nghệ, Công nghệ Thông tin đã


trở thành một phần không thể thiếu trong mọi lĩnh vực hoạt động đời sống của con người.
Đối với các nước phát triển tin học đã được đưa vào ứng dụng quản lí trong các ngành ở
tất cả lĩnh vực, trong khi tại Việt Nam tin học hầu như chỉ được đưa vào ứng dụng quản lí
trong các doanh nghiệp quy mô lớn còn doanh nghiệp vừa và nhỏ điều này vẫn còn khá
mới mẻ.
Hiện nay, website tin tức được xem là mô hình có tính phổ biến và đa dạng nhất
bởi khả năng cập nhật đa dạng và xuất bản thông tin nhanh. Website tin tức cung cấp
đầy đủ các tính năng cơ bản của một website như: quản lý quảng cảo, hỗ trợ tìm kiếm,
thống kê, hệ thống bình chọn,…không giới hạn về kí tự, số lượng bài viết hay thời điểm
đăng tải. Bên cạnh đó, trang web tin tức có tốc độ truy cập nhanh và rất thuận tiện cho
người tìm kiếm.
Đối với các doanh nghiệp kinh doanh trong lĩnh vực báo chí, biên tập, xuất bản…
ngày nay là vô cùng cần thiết. Bởi vì thời đại công nghệ phát triển, văn hóa đọc của độc
giả cũng như người dùng không còn dừng lại ở những trang sách hay một quyển báo đơn
giản nữa, họ chuyển sang đọc tin tức điện tử nhiều hơn. Thậm chí, bạn có thể dễ dàng
nhận thấy một thói quen đã thay đổi trong thời điểm hiện tại, đó chính là người ta sẽ cầm
điện thoại để check thông tin ngay khi ngày mới bắt đầu, thưởng thức cà phê sáng bên
cạnh một chiếc Ipad chứ không còn là một tờ báo như ngày xưa.
Sau khi tìm hiểu và nghiên cứu, để xây dựng website cho riêng mình, chúng em đã
chọn ngôn ngữ lập trình PHP, theo mô hình MVC với đề tài “Xây dựng website tin tức”.
Để thực hiện báo cáo Thực tập cơ sở chuyên ngành, nhóm em xin gửi lời cảm ơn
đến tất cả các thầy cô trong bộ môn và đặc biệt là thầy giáo hướng dẫn trực tiếp Lê Đức
Thuận đã tạo điều kiện, giúp đỡ chỉ bảo tận tình nhóm em trong quá trình làm báo cáo.
Nhóm em xin chân thành cảm ơn thầy cô!

1


CHƯƠNG 1. Tạo database (thiết kế cơ sở dữ liệu)
Dữ liệu đóng một vai trò vô cùng quan trọng trong hệ thống. Tất cả các hoạt động của hệ

thống đều liên quan đến cơ sở dữ liệu: dữ liệu vào, dữ liệu ra. Mỗi một chức năng của hệ
thống khi hoạt động đều cần đến dữ liệu liên quan. Vì vậy việc thiết kế cơ sở dữ liệu là
một công việc quan trọng quyết định đến chất lượng của cả hệ thống. Dữ liệu được tổ
chức theo mô hình quan hệ vì những lý do sau:


Đơn giản: các dữ liệu được biểu diễn dưới 1 dạng duy nhất là quan hệ, chính là
các bảng giá trị, nó khá tự nhiên và gần gũi với người dùng.



Chặt chẽ: các khái niệm được hình thức hóa cao, cho phép áp dụng các công cụ
toán học, thuật toán.



Trừu tượng hóa cao: mô hình chỉ dừng lại ở mức quan niệm, nghĩa là độc lập với
mức vật lý, với sự cài đặt, với các thiết bị, nhờ đó làm tăng tính độc lập giữa dữ
liệu và chương trình.



Cung cấp các ngôn ngữ truy vấn ở mức cao như SQL, dễ sử dụng và đã trở thành
chuẩn.

Hình 1.1 : Quy trình kết nối đến CSDL
1.1. Bảng Categories
Bảng Categories là bảng chứa các thông tin về danh mục( cha và con). Nó gồm tổng 9
cộng trường dữ liệu.
1.1.1. ID

ID được đặt làm khóa chính và nó là duy nhất, tự động tăng. ID có kiểu dữ
liệu là integer( kiểu số).
2


1.1.2. Name( tên danh mục)
Tên của danh mục có kiểu dữ liệu là dạng varchar
1.1.3. Slug( đường dẫn trên thanh url)
Slug là đường dẫn trên thanh url của trình duyệt web, nó chính là tên của
danh mục nhưng được viết dưới dạng không dấu và các chữ được nối với
nhau băng dấu gạch ngang. Kiểu dữ liệu của Slug là varchar và không lặp lại
1.1.4. Parent_id( loại danh mục)
Parent_id dùng để phân loại danh mục cha với danh mục con. Kiểu dữ liệu là
integer. Chúng ta quy định NULL là thuộc danh mục cha, còn lại là thuộc
danh mục con.
1.1.5. User_id( người tạo)
Users_id là id của người tạo ra danh mục đó. Nhằm để phân biệt và quản lý
các danh mục. Nó là khóa ngoại được liên kết với trường ID của bảng Users.
Kiểu dữ liệu là integer.
1.1.6. Approved( trạng thái duyệt)
Là trường dữ liệu thuộc kiểu dữ liệu integer. Nhận 2 giá trị 1 và 0, chúng ta
quy ước 1 là đã được duyệt, 0 là chưa được duyệt. trường dữ liệu này có mục
đích giúp admin quản lý các danh mục không phù hợp với trang web của họ.
1.1.7. Created_ad( ngày tạo)
Created_at có kiểu dữ liệu là datetime với kiểu hiển thị là năm-tháng-ngày
giờ-phút-giây. Khi tạo 1 danh mục mới thì trường này sẽ tự động lấy ngày giờ
hiện tại.
1.1.8. Updated_at( ngày chỉnh sửa)
Updated_at : thời gian update danh mục.
1.1.9. Deleted_at( xóa mềm)

Deleted_at có kiểu dự liệu là datatime, giá trị mặc định NULL. Khi thực hiện
xóa sẽ lưu lại thời gian.
1.2. Bảng Posts
Bảng dữ liệu Posts là bảng dữ liệu chứa các thông tin chi tiết về một bài viết nào đó.
Nó gồm tổng cộng 13 trường dữ liệu.
1.2.1. ID
ID được đặt làm khóa chính và nó là duy nhất( k được lặp lại) , tự động tăng
dần. ID có kiểu dữ liệu là int.
1.2.2. Title( tiêu đề của bài viết)
Tiêu đề nói cách khác nó chính là tên của bài viết.
1.2.3. Slug( đường dẫn của bài viết)
Slug của bảng Posts cũng giống như slug của bảng categories ở trên vậy. Nó
cũng là duy nhất và được sinh ra từ title.
3


1.2.4. Content( chi tiết bài viết)
Content là phần quan trọng nhất của bảng Posts. Nó là mục chỉ ra chi tiết của
1 bài viết nào đó. Kiểu dữ liệu của nó là dạng text.
1.2.5. Thumbnail( anh thu nhỏ của bài viết)
Thumbnail là ảnh thu nhỏ của một bài viết, nó gần như ảnh đại diện của bài
viết đó vậy. Trên giao diện nó sẽ được hiển thị cùng với tiêu đề bài viết.
1.2.6. Description( đoạn giới thiệu ngắn của bài viết)
Đây là một đoạn tóm tắt ngắn của bài viết. Mục đích là làm cho người đọc tò
mò về bài viết.
1.2.7. Category_id( thuộc loại danh mục nào)
Trường này được liên kết với trường ID trong bảng categories. Category_id
dùng để phân loại các bài viết, cho chúng ta biết nó thuộc loại danh mục nào
để người đọc dễ tìm kiếm.
1.2.8. User_id( người viết)

User_id được liên kết với trường ID của bảng Users nhằm cho người đọc biết
được bài viết do ai viết và đăng lên.
1.2.9. Status( trạng thái: ẩn hoặc hiện)
Là trạng thái của bài viết. Có 2 trạng thái ẩn hoặc hiện, nếu admin muốn ẩn 1
bài nào đó thì cho giá trị của trường này về 0, còn muốn hiện thì cho về 1.
1.2.10.Approved( trạng thái duyệt)
Trạng thái duyệt là trạng thái khi 1 bloger nào đó đăng bài nhưng phải được
admin duyệt thì mới hiển thị lên trang web được.
1.2.11. View_count( số lượng xem)
Số lượng lượt xem của 1 bài viết được đặt trong trường view_count này.
1.2.12. Created_at( ngày tạo)
Ngày tạo ra bài viết.
1.2.13. Updated_at( ngày chỉnh sửa)
Ngày chỉnh sửa rồi update lại bài viết
1.2.14. Deleted_at( ngày xóa)
Thời gian xóa bài viết (xóa mềm).
1.3. Bảng users
1.3.1. ID
ID này là duy nhất, mỗi user đều có 1 id khác nhau. Kiểu dữ liệu là int và
tăng dần.
1.3.2. Name( tên user)
Đây là tên của user. Kiểu dữ liệu là varchar.
1.3.3. Avatar( ảnh đại diện)
4


1.3.4. Phone_number( số điện thoại)
Số điện thoại của user có kiểu dữ liệu là int.
1.3.5. Email( email user)
Email của user có kiểu dữ liệu là varchar. Nó là duy nhất vì nó sẽ được dùng

để đăng nhập vào hệ thống quản lý trang web.
1.3.6. Password( mật khẩu)
Mật khẩu có kiểu dữ kiệu là varchar. Nó dùng để đăng nhập vào hệ thống.
1.3.7. Status( trạng thái: hoạt động hay đã khóa)
Status có 2 giá trị 1 hoặc 0. 0 là đã khóa, 1 là đang hoạt động.
1.3.8. Role( quyền: admin hay blogger)
Trường này có ý nghĩa là phân biệt admin hay bloger. 0 là bloger, 1 là admin.
1.3.9. Created_at( ngày tạo)
Ngày tạo ra tài khoản user.
1.3.10 Quote ( câu nói tâm đắc )
1.4. Bảng comments
1.4.1. ID
ID này là duy nhất, mỗi comment đều có 1 id khác nhau. Kiểu dữ liệu là int
và tăng dần.
1.4.2. User_id( người tạo)
Id của user viết comment. Kiểu dữ liệu là integer.
1.4.3. Slug_post( đường dẫn bài viết đã comment)
1.4.4. content( nội dung comment)
1.4.5. Status( trạng thái: đã duyệt hay chưa)
Status có 2 giá trị 1 hoặc 0. 0 là đã khóa, 1 là đang hoạt động.
1.4.6. Created_at( ngày tạo)
Ngày tạo ra comment.

5


Mô hình cơ sở dữ liệu hoàn chỉnh

Hình 1.2: Sơ đồ mô hình CSDL


6


CHƯƠNG 2. Quản lý User
Gồm các chức năng Thêm mới và Cập nhật, xóa bỏ. Các chức năng này cho phép
admin thêm mới, cập nhật, xóa bỏ thông tin user. Admin thêm mới thông tin khi có user
mới và sẽ cập nhật, xóa bỏ thông tin thay đổi của các users.
2.1. Thêm User
Thêm user là thêm một tài khoản, có thể là bloger hoặc admin. Sau khi thêm, tài
khoản này có thể sử dụng cách chức năng tương ứng với tài khoản đó. Ví dụ tài khoản
bloger thì có thể đăng bài, sửa bài… hay tài khoản admin thì có tất cả chức năng của
trang Web như duyệt bài, đăng bài, ẩn bài, xóa bài…. Thêm tài khoản user chỉ có admin
được phép thêm.
Cách tạo trong giao diện quản lý của admin

Hình 2.1 : giao diện tạo người dùng
Đây là giao diện thêm tài khoản user của admin.
Trong đó:
Tên: Nhập tên của user muốn thêm.
Email: Nhập email của user.
Mật khẩu: Nhập mật khẩu.
Quyền: Chọn quyền admin hoặc bloger.

7


2.2.

Cập nhật User


Cập nhật user là admin hay bloger muốn thay đổi thông tin cá nhân của mình, ví dụ
như thay đổi số điện thoại hay thay đổi họ tên. Vì đây là thông tin cá nhân nên người
khác không thể thay thế được thông tin của người khác kể cả admin, chỉ chính user đó
mới có quyền thay đổi. Admin chỉ có quyền khóa hay bỏ khóa cho tài khoản của user.

Hình 2.2 : giao diện thay đổi thông tin cá nhân

Hình 2.3 : giao diện thay đổi Password

8


2.3.

Khóa User

Khi 1 user nào đó không còn hoạt động trong một thời gian hoặc có những hành vi xấu
( đăng bài với thông tin sai sự thật, comment không đúng mực… ) thì admin sẽ khóa tài
khoản đó.
* Chú ý: khi tài khoản bị khóa thì tất cả bài viết của tài khoản đó sẽ bị ẩn

Hình 2.4 : giao diện quản lý các tài khoản

9


CHƯƠNG 3. Quản lý thể loại,loại tin
Gồm 1 chức năng chính là Quản lý thông tin danh mục bài viết. Chức năng này cho
phép admin hay bloger thêm mới, cập nhật, phê duyệt các thông tin của danh mục nào đó.
Sau khi đăng nhập hệ thống sẽ kiểm tra quyền quản trị trước


Hình 3.1.1: giao diện quản lý danh mục của Admin

Hình 3.1.2: giao diện xem danh mục của Blogger

10


3.1.

Thêm danh mục

Khi admin hay bloger có một danh mục mới thì họ có thể thêm mới trong mục quản lý
danh mục trong giao diện của họ.

Hình 3.2: Giao diện thêm danh mục.
Đây là giao diện khi admin hay bloger muốn thêm một danh mục mới.
Trong đó:
Name: Tên của danh mục.
Parent: Thuộc loại danh mục nào: Danh mục cha hay danh mục con.
Slug: Đường dẫn.
Description: Đoạn giới thiệu ngắn.
Ngoài ra admin cũng có thể thêm danh mục trực tiếp trên database như thêm user ở phần
trên.
3.2.

Sửa danh mục( tương tự như user )

3.3.


Duyệt danh mục

Một user nào đó có quyền tạo thêm danh mục để đăng bài viết phù hợp. Nhưng
danh mục đó phải được sự phê duyệt của người quản trị.

11


VD:

Hình 3.4: Ví dụ về duyệt danh mục.
3.4.

Ẩn/Hiện danh mục

Một danh mục sau khi được duyệt, người quản trị vì một lý do nào đó muốn ẩn
danh mục đó đi, và cũng có thể hiện lại danh mục đó.
*Lưu ý: Nếu ẩn một danh mục cha thì các danh mục con của nó cũng bị ẩn đi và các bài
viết thuộc các danh mục đó cũng bị ẩn theo.
VD: Danh mục Game là danh mục cha khi ẩn đi thì các danh mục con là Liên Minh HT
và Liên Quân Mobile cũng sẽ bị ẩn đi.

Hình 3.5: Ví dụ về Ẩn/Hiện danh mục.
12


CHƯƠNG 4. Quản lý các bài viết
Gồm các chức năng thêm mới, cập nhật, xóa bài viết. Các chức năng này cho phép
admin hay bloger quản lý được các bài viết của họ. Mỗi bloger hay admin chỉ có thể thêm
bài viết mới, cập nhât, xóa bài viết của riêng mình ( tài khoản admin hoạt động như một

blogger ). Admin không có quyền thêm hay sửa một bài viết của user khác.

Hình 4.1: giao diện quản lý bài viết của từng user.
4.1.

Thêm bài viết

Trong giao diện quản lý của mỗi tài khoản đều có mục thêm bài viết. Sau khi thêm
mới thành công, bài viết cần được admin duyệt, khi chưa được duyệt thì bài viết được
mặc định ở dạng ẩn.

13


Hình 4.2: giao diện thêm bài viết của từng user.
Đây là giao diện thêm mới bài viết.
Trong đó:
• Title: Tiêu đề của bài viết.
• Category: Loại danh mục.
• Content: nội dung chi tiết bài viết, và được lưu trong CSDL dưới dạng
HTML
• Thumbnail: Ảnh đại diện của bài viết.
• Slug: Đường dẫn.
• Description: Giới thiệu ngắn của bài viết
4.2.

Sửa bài viết

Trong danh sách bài viết của user/admin có mục sửa bài viết của chính mình tại
mỗi bài viết

14


Hình 4.3: giao diện sửa bài viết của từng user.
4.3.

Xóa bài viết (xóa mềm)

Khi tác giả xóa đi bài viết của mình thì bài viết sẽ bị xóa khỏi trang web nhưng
vẫn được lưu lại database. Thời gian xóa của bài viết sẽ được cập nhật trong trường
delete_at của bài viết đó trong database
4.4

Phê duyệt,ẩn,hiện bài viết

Khi một bài viết được tạo mới phải được sự phê duyệt của người quản trị thì mới
được hiện lên trang web. Các bài viết mới chờ phê duyệt được hiển thị ở mục Quản lý
trang blog/Duyệt bài đăng mới trong giao diện quản lý của Admin

Hình 4.4: giao diện duyệt bài viết mới.
15


Tất cả các bài viết được phê duyệt được hiển thị trong Quản lý trang blog/Danh sách
bài đăng

Hình 4.5: Các bài viết đã được phê duyệt.
Một bài viết sau khi được phê duyệt thì admin có thể ẩn hoặc hiển thị lại. Các bài đăng bị
ẩn được hiển thị trong mục Quản lý trang blog/Các bài đăng bị ẩn


Hình 4.6: giao diện các bài viết bị ẩn.

16


CHƯƠNG 5. Đăng ký, đăng nhập, đăng xuất
5.1 Đăng ký
Người dùng muốn trở thành bloger để hợp tác với trang Web thì vào đăng ký một
tài khoản với tài khoản là mail của người đó( mail phải hợp lệ, không phải là mail rác) và
mật khẩu. Sau khi đăng kí xong, người dùng phải chờ Admin duyệt, nếu được duyệt thì
tài khoản đó mới dùng để đăng nhập được.

Hình 5.1 giao diện trang đăng ký.
Name: Tên của người dùng.
Email Address: Địa chỉ email của người dùng ( dùng để đăng nhập ).
Password: Mật khẩu của tài khoản.
Repeat Password: Nhập lại mật khẩu ở trên ( Bắt buộc phải nhập đúng ).
* Chú ý: Đăng ký chỉ tạo đc tài khoản Bloger
5.2 Đăng nhập

Hình 5.2 giao diện trang đăng nhập.
17


Sau khi đăng nhập thành công, hệ thống sẽ kiểm tra xem user đăng nhập là
Admin/Blogger mà chuyển hướng tới trang của Admin hay là Blogger
Đây là giao diện của admin. Các chức năng gồm quảy lý bài viết, quản lý danh mục, quản
lý trang blog và quản lý tài khoản.

Hình 5.3 giao diện trang quản lý của admin.

Đây là giao diện của Blogger. Các chức năng gồm quảy lý bài viết, quản lý danh mục.

Hình 5.4 giao diện trang quản lý của blogger.
5.3 Đăng xuất
Khi đăng xuất bạn được chuyển hướng sang trang chủ của web.
18


CHƯƠNG 6. Giao diện người dùng
6.1 Cấu trúc giao diện
Các page của website được chia làm 5 thành phần : header, container, footer,
sidebar, menu setting. Trong đó header, sidebar, menu setting và footer được dùng chung
cho các page. Website có 6 page là:
• Trang chủ
• Lọc bài viết theo danh mục, tìm kiếm
• Xem chi tiết bài viết
• Giới thiệu: giới thiệu về trang web
• Liên hệ: phản hồi của người đọc về trang web
• Team page: infor các tác giả.
6.1.1 Header

Hình 6.1 Header
Trong đó:
• Menu đăng nhập, đăng ký
• Logo trang web
• Thanh menu điều hướng gồm các option trang chủ, danh mục, team page, giới
thiệu, liên hệ, tìm kiếm, danh sách các bài viết nhiều lượt tìm kiếm nhất

19



6.1.2 Menu setting
Menu setting gồm các tùy chỉnh về font chữ, background, body color, menu color,
change layout

Hình 6.2 menu setting
6.1.3 sidebar
Sidebar bao gồm các quảng cáo, fanpage mạng xã hội, các bài viết nổi bật
6.1.4 Footer
Footer bao gồm giới thiệu về trang web, quảng cáo, các bài viết cũ

Hình 6.3 footer
20


6.2 Trang chủ
Trang chủ bao gồm 3 bài viết nổi bật ( nhiều lượt xem nhất ), danh sách các bài
viết được sắp xếp theo thứ tự mới nhất ( 6 bài viết trên 1 trang ).

Hình 6.4 featured posts

Hình 6.5 latest posts

21


6.3 Lọc bài viết theo danh mục, tìm kiếm
Tất cả các bài viết cùng danh mục sẽ được hiển thị trên cùng một trang.

Hình 6.6 lọc bài viết theo danh mục.

Tất cả các kết quả tìm kiếm được hiển thị trên một trang.

Hình 6.7 tìm kiếm bài viết

22


6.4 Xem chi tiết bài viết
Toàn bộ nội dung chi tiết của bài viết được hiển thị tại đây. Tính năng comment
chỉ có thể sử dụng khi đã đăng nhập.

Hình 6.8 Chi tiết bài viết

23


×