LỜI CẢM ƠN
Sau khoảng thời gian học tập và rèn luyện tại Trường Đại học Công Nghệ
Thông Tin và Truyền Thông, đến nay em đã hoàn thành đồ án tốt nghiệp của
mình. Em xin bày tỏ lòng biết ơn sâu sắc và gửi lời cảm ơn tới Ban chủ nhiệm
khoa Công nghệ thông tin, các thầy cô giáo bộ môn Công nghệ phần mềm, các
thầy cô đã tận tình giảng dạy, trang bị cho chúng em những vốn kiến thức và kinh
nhiệm quý báu, cung cấp cho chúng em những điều kiện và môi trường học tập
tốt nhất.
Để hoàn thành tốt được bài báo cáo này, em xin được gửi lời cảm ơn trân
thành tới Thầy giáo – Thạc sỹ Lê Nam Huy, người đã luôn theo sát và hướng dẫn
tạo mọi điều kiện tốt nhất giúp em hoàn thành báo cáo đồ án tốt nghiệp này.
Sinh viên
Bùi Hồng Long
1
LỜI CAM ĐOAN
Em xin cam đoan nội dung trong bài báo cáo thực tập chuyên nghành này
này là kết quả của quá trình nghiên cứu tìm hiểu thực sự của cá nhân em, được
thực hiện dựa trên cơ sở lý thuyết và sự hướng dẫn nhiệt tình chỉ bảo của Thầy
giáo – Th.S Lê Nam Huy.
Các nội dung lý thuyết, sơ đồ phân tích được nghiên cứu và áp dụng từ
phần tài liệu tham khảo, chương trình demo do em tự thiết kế.
Nếu có sự sao chép, copy từ các bản báo cáo khác em xin tự chịu mọi
trách nhiệm trước bộ môn.
Sinh viên
Bùi Hồng Long
2
MỤC LỤC
LỜI CẢM ƠN......................................................................................................1
LỜI CAM ĐOAN................................................................................................2
MỤC LỤC............................................................................................................ 3
LỜI NÓI ĐẦU.....................................................................................................5
CHƯƠNG I : CƠ SỞ LÝ THUYẾT..................................................................6
1.1 Tìm hiểu về PHP........................................................................................6
1.1.1 Lịch sử phát triển của PHP...................................................................7
1.1.2 Tại sao ta sử dụng ngôn ngữ lập trình PHP?......................................10
1.2 Tìm hiểu về MYSQL................................................................................10
1.2.1 Mười lý do bạn chọn MySQL.............................................................11
1.2.2 Các kiểu dữ liệu trong cơ sở dữ liệu MySQL.....................................15
1.2.3 Các hàm thông dụng trong MySQL...................................................17
1.3 PHP và MySQL........................................................................................17
1.3.1 Các tính năng chính:...........................................................................18
1.3.2 Các tính năng khác:............................................................................19
CHƯƠNG II : PHÂN TÍCH THIẾT KẾ VÀ HỆ THỐNG............................21
2.1 Giới thiệu đề tài Website...........................................................................21
2.2 Phân tích yêu cầu bài toán.......................................................................21
2.3 Phân tích thiết kế hệ thống......................................................................23
2.3.1 Yêu cầu hệ thống................................................................................23
2.3.2 Thông tin vào/ ra của hệ thống...........................................................24
2.3.3 Đặc tả mô hình UML..........................................................................28
2.3.4 Sequence Diagram..............................................................................34
CHƯƠNG III : THIẾT KẾ WEBSITE...........................................................40
3.1 Giới thiệu về giao diện chính của website................................................40
3.1.1 Giao diện ngoài...................................................................................40
3.1.2 Giao diện trang quản trị:.....................................................................52
3.2 Cấu trúc của website.................................................................................55
3
3.2.1 Cấu trúc và chức năng của các thư mục..............................................55
3.2.2 Chức năng của các file........................................................................56
KẾT LUẬN........................................................................................................61
TÀI LIỆU THAM KHẢO :..............................................................................62
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN.................................................63
4
LỜI NÓI ĐẦU
Ngày nay chúng ta đang được sống trong kỷ nguyên của tin học nhờ sự
vượt bậc , sự bùng nổ mạnh mẽ của công nghệ thông tin. Công nghệ thông tin
không chỉ dừng lại ở mục đích phục vụ cho khoa học kỹ thuật mà còn đi sâu vào
đời sống , chính trị, kinh tế , xã hội, trở nên thân thiện, gần gũi , mang lại nhiều
lợi ích cho con người. Đặc biệt trong lĩnh vực thông tin, công nghệ thông tin đã
thực sự có nhiều đóng góp quan trọng trong công việc quản lý , quảng cáo các
sản phẩm, hàng hóa của các công ty, xí nghiệp, doanh nghiệp lớn nhỏ. Những
ứng dụng của công nghệ thông tin đã mang lại nhiều lợi ích không nhỏ, đạt hiệu
quả kinh tế cho những đơn vị đó. Thông tin hiện nay đang trở nên rất phổ biến
trong mọi lĩnh vực và cần thiết cho mỗi gia đình , cá nhân và các trường học.
Thông tin giúp các học sinh, sinh viên trở nên hữu ích cho việc học tập. Vì vậy
vấn đề thông tin trở nên không thể thiếu trong các công ty , xí nghiệp , trường
học , gia đình, du lịch và các nơi công cộng. Muốn quảng bá hình ảnh và đưa các
hình ảnh của mình cho mọi người biết đến một cách rộng rải và nhanh chóng thì
cần phải quảng bá. Vì vậy, xây dựng một website du lịch là điều không thể thiếu.
Đề tài này là kết quả của quá trình tích lũy và vận dụng những kiến thức mà em
tiếp thu và tìm hiểu được trong quá trình học tập. Trong quá trình thực hiện đề tài
này em xin cám ơn thầy giáo Lê Nam Huy đã định hướng cho em . Em xin gửi
tới thầy những lời cảm ơn chân thành nhất. Mặc dù đã cố gắng trong quá trình
nghiên cứu làm đề tài nhưng do còn nhiều hạn chế về thời gian và trình độ nên
đề tài của em không tránh khỏi thiếu sót , nhiều vấn đề chưa được giải quyết
hoàn chỉnh . Vì vậy em rất mong nhận được những ý kiến đóng góp của các thầy
cô và các bạn để đề tài của em được hoàn thiện và phát triển.
Em xin chân thành cảm ơn!
5
CHƯƠNG I : CƠ SỞ LÝ THUYẾT
1.1 Tìm hiểu về PHP
PHP (viết tắt hồi quy "PHP: Hypertext Preprocessor") là một ngôn ngữ lập
trình kịch bản hay một loại mã lệnh chủ yếu được dùng để phát triển các ứng
dụng viết cho máy chủ, mã nguồn mở, dùng cho mục đích tổng quát. Nó rất thích
hợp với web và có thể dễ dàng nhúng vào trang HTML. Do được tối ưu hóa cho
các ứng dụng web, tốc độ nhanh, nhỏ gọn, cú pháp giống C và Java, dễ học và
thời gian xây dựng sản phẩm tương đối ngắn hơn so với các ngôn ngữ khác nên
PHP đã nhanh chóng trở thành một ngôn ngữ lập trình web phổ biến nhất thế
giới.
Đoạn mã sau minh họa giúp cách viết PHP lồng vào các trang HTML dễ
dàng như thế nào:
<html>
<head>
<title>Mã mẫu</title>
</head>
<body>
echo "Chào thế giới PHP!";
?>
</body>
</html>
Thẻ sẽ đánh đấu sự bắt đầu và sự kết thúc của phần mã PHP qua đó máy
chủ biết để xử lý và dịch mã cho đúng. Đây là một điểm khá tiện lợi của PHP
giúp cho việc viết mã PHP trở nên khá trực quan và dễ dàng trong việc xây dựng
phần giao diện ứng dụng HTTP.
Ngôn ngữ, các thư viện, tài liệu gốc của PHP được xây dựng bởi cộng
đồng và có sự đóng góp rất lớn của Zend Inc., công ty do các nhà phát triển cốt
lõi của PHP lập nên nhằm tạo ra một môi trường chuyên nghiệp để đưa PHP phát
triển ở quy mô xí nghiệp.
1.1.1 Lịch sử phát triển của PHP
PHP được phát triển từ một sản phẩm có tên là PHP/FI. PHP/FI do
Rasmus Lerdorf tạo ra năm 1995, ban đầu được xem như là một tập con đơn giản
6
của các mã kịch bản Perl để theo dõi tình hình truy cập đến bản sơ yếu lý lịch của
ông trên mạng. Ông đã đặt tên cho bộ mã kịch bản này là 'Personal Home Page
Tools'. Khi cần đến các chức năng rộng hơn, Rasmus đã viết ra một bộ thực thi
bằng C lớn hơn để có thể truy vấn tới các cơ sở dữ liệu và giúp cho người sử
dụng phát triển các ứng dụng web đơn giản. Rasmus đã quyết định công bố mã
nguồn của PHP/FI cho mọi người xem, sử dụng cũng như sửa các lỗi có trong nó
đồng thời cải tiến mã nguồn.
PHP/FI, viết tắt từ "Personal Home Page/Forms Interpreter", bao gồm một
số các chức năng cơ bản cho PHP như ta đã biết đến chúng ngày nay. Nó có các
biến kiểu như Perl, thông dịch tự động các biến của form và cú pháp HTML
nhúng. Cú pháp này giống như của Perl, mặc dù hạn chế hơn nhiều, đơn giản và
có phần thiếu nhất quán.
Vào năm 1997, PHP/FI 2.0, lần viết lại thứ hai của phiên bản C, đã thu hút
được hàng ngàn người sử dụng trên toàn thế giới với xấp xỉ 50.000 tên miền đã
được ghi nhận là có cài đặt nó, chiếm khoảng 1% số tên miền có trên mạng
Internet. Tuy đã có tới hàng nghìn người tham gia đóng góp vào việc tu chỉnh mã
nguồn của dự án này thì vào thời đó nó vẫn chủ yếu chỉ là dự án của một người.
PHP/FI 2.0 được chính thức công bố vào tháng 11 năm 1997, sau một thời
gian khá dài chỉ được công bố dưới dạng các bản beta. Nhưng không lâu sau đó,
nó đã được thay thế bởi các bản alpha đầu tiên của PHP 3.0.
PHP 3
PHP 3.0 là phiên bản đầu tiên cho chúng ta thấy một hình ảnh gần gũi với
các phiên bản PHP mà chúng ta được biết ngày nay. Nó đã được Andi Gutmans
và Zeev Suraski – 2 nhà phát triển người Israel tạo ra năm 1997 sau khi viết lại
hoàn toàn bộ mã nguồn trước đó. Lý do chính mà họ đã tạo ra phiên bản này là
do nhận họ thấy PHP/FI 2.0 hết sức yếu kém trong việc phát triển các ứng dụng
thương mại điện tử mà họ đang xúc tiến trong một dự án của trường đại học
Technion – Học viện công nghệ Israel. Trong một nỗ lực hợp tác và bắt đầu xây
dựng dựa trên cơ sở người dùng đã có của PHP/FI, Andi, Rasmus và Zeev đã
7
quyết định hợp tác và công bố PHP 3.0 như là phiên bản thế hệ kế tiếp của
PHP/FI 2.0, và chấm dứt phát triển PHP/FI 2.0.
Một trong những sức mạnh lớn nhất của PHP 3.0 là các tính năng mở rộng
mạnh mẽ của nó. Ngoài khả năng cung cấp cho người dùng cuối một cơ sở hạ
tầng chặt chẽ dùng cho nhiều cơ sở dữ liệu, giao thức và API khác nhau, các tính
năng mở rộng của PHP 3.0 đã thu hút rất nhiều nhà phát triển tham gia và đề xuất
các mô đun mở rộng mới. Hoàn toàn có thể kết luận được rằng đây chính là điểm
mấu chốt dẫn đến thành công vang dội của PHP 3.0. Các tính năng khác được
giới thiệu trong PHP 3.0 gồm có hỗ trợ cú pháp hướng đối tượng và nhiều cú
pháp ngôn ngữ nhất quán khác.
Ngôn ngữ hoàn toàn mới đã được công bố dưới một cái tên mới, xóa bỏ
mối liên hệ với việc sử dụng vào mục đích cá nhân hạn hẹp mà cái tên PHP/FI
2.0 gợi nhắc. Nó đã được đặt tên ngắn gọn là 'PHP', một kiểu viết tắt hồi quy của
"PHP: Hypertext Preprocessor".
Vào cuối năm 1998, PHP đã phát triển được con số cài đặt lên tới hàng
chục ngàn người sử dụng và hàng chục ngàn Web site báo cáo là đã cài nó. Vào
thời kì đỉnh cao, PHP 3.0 đã được cài đặt cho xấp xỉ 10% số máy chủ Web có
trên mạng Internet.
PHP 3.0 đã chính thức được công bố vào tháng 6 năm 1998, sau thời gian
9 tháng được cộng đồng kiểm nghiệm.
PHP 4
Vào mùa đông năm 1998, ngay sau khi PHP 3.0 chính thức được công bố,
Andi Gutmans và Zeev Suraski đã bắt đầu bắt tay vào việc viết lại phần lõi của
PHP. Mục đích thiết kế là nhằm cải tiến tốc độ xử lý các ứng dụng phức tạp, và
cải tiến tính mô đun của cơ sở mã PHP. Những ứng dụng như vậy đã chạy được
trên PHP 3.0 dựa trên các tính năng mới và sự hỗ trợ khá nhiều các cơ sở dữ liệu
và API của bên thứ ba, nhưng PHP 3.0 đã không được thiết kế để xử lý các ứng
dụng phức tạp như thế này một cách có hiệu quả.
Một động cơ mới, có tên 'Zend Engine' (ghép từ các chữ đầu trong tên của
Zeev và Andi), đã đáp ứng được các nhu cầu thiết kế này một cách thành công,
và lần đầu tiên được giới thiệu vào giữa năm 1999. Họ sáng lập Zend
Technologies tại Ramat Gan – thành phố của khu vực Tel Avis. PHP 4.0, dựa trên
động cơ này, và đi kèm với hàng loạt các tính năng mới bổ sung, đã chính thức
8
được công bố vào tháng 5 năm 2000, gần 2 năm sau khi bản PHP 3.0 ra đời.
Ngoài tốc độ xử lý được cải thiện rất nhiều, PHP 4.0 đem đến các tính năng chủ
yếu khác gồm có sự hỗ trợ nhiều máy chủ Web hơn, hỗ trợ phiên làm việc HTTP,
tạo bộ đệm thông tin đầu ra, nhiều cách xử lý thông tin người sử dụng nhập vào
bảo mật hơn và cung cấp một vài các cấu trúc ngôn ngữ mới.
Với PHP 4, số nhà phát triển dùng PHP đã lên đến hàng trăm nghìn và
hàng triệu site đã công bố cài đặt PHP, chiếm khoảng 20% số tên miền trên mạng
Internet.
Nhóm phát triển PHP cũng đã lên tới con số hàng nghìn người và nhiều
nghìn người khác tham gia vào các dự án có liên quan đến PHP như PEAR,
PECL và tài liệu kĩ thuật cho PHP.
PHP 5
Sự thành công hết sức to lớn của PHP 4.0 đã không làm cho nhóm phát
triển PHP tự mãn. Cộng đồng đã nhanh chóng giúp họ nhận ra những yếu kém
của PHP 4 đặc biệt với khả năng hỗ trợ lập trình hướng đối tượng (OOP), xử lý
XML, không hỗ trợ giao thức máy khách mới của MySQL 4.1 và 5.0, hỗ trợ dịch
vụ web yếu. Những điểm này chính là mục đích để Zeev và Andi viết Zend
Engine 2.0, lõi của PHP 5.0. Một thảo luận trên Slashdot đã cho thấy việc phát
triển PHP 5.0 có thể đã bắt đầu vào thời điểm tháng 12 năm 2002 nhưng những
bài phỏng vấn Zeev liên quan đến phiên bản này thì đã có mặt trên mạng Internet
vào khoảng tháng 7 năm 2002. Ngày 29 tháng 6 năm 2003, PHP 5 Beta 1 đã
chính thức được công bố để cộng đồng kiểm nghiệm. Đó cũng là phiên bản đầu
tiên của Zend Engine 2.0. Phiên bản Beta 2 sau đó đã ra mắt vào tháng 10 năm
2003 với sự xuất hiện của hai tính năng rất được chờ đợi: Iterators, Reflection
nhưng namespaces một tính năng gây tranh cãi khác đã bị loại khỏi mã nguồn.
Ngày 21 tháng 12 năm 2003: PHP 5 Beta 3 đã được công bố để kiểm tra với việc
phân phối kèm với Tidy, bỏ hỗ trợ Windows 95, khả năng gọi các hàm PHP bên
trong XSLT, sửa chữa nhiều lỗi và thêm khá nhiều hàm mới. PHP 5 bản chính
thức đã ra mắt ngày 13 tháng 7 năm 2004 sau một chuỗi khá dài các bản kiểm tra
thử bao gồm Beta 4, RC 1, RC2, RC3. Mặc dù coi đây là phiên bản sản xuất đầu
tiên nhưng PHP 5.0 vẫn còn một số lỗi trong đó đáng kể là lỗi xác thực HTTP.
9
Ngày 14 tháng 7 năm 2005, PHP 5.1 Beta 3 được PHP Team công bố đánh dấu
sự chín muồi mới của PHP với sự có mặt của PDO, một nỗ lực trong việc tạo ra
một hệ thống API nhất quán trong việc truy cập cơ sở dữ liệu và thực hiện các
câu truy vấn. Ngoài ra, trong PHP 5.1, các nhà phát triển PHP tiếp tục có những
cải tiến trong nhân Zend Engine 2, nâng cấp mô đun PCRE lên bản PCRE 5.0
cùng những tính năng và cải tiến mới trong SOAP, streams và SPL.\
1.1.2 Tại sao ta sử dụng ngôn ngữ lập trình PHP?
PHP là một ngôn ngữ lập trình. Ngôn ngữ này hoạt động cận kề với
Webserver để thông dịch các yêu cầu từ trên World Wide Web, sau đó nhận các
trả lời từ Webserver chuyển tải đến trình duyệt Web nhằm đáp ứng các nhu cầu
đó.
Các đặc điểm nổi bật:
PHP là mã nguồn mở
Tốc độ nhanh, dễ sử dụng
Chạy trên nhiều hệ điều hành
Truy cập bất kỳ loại CSDL nào
Luôn được cải tiến và cập nhật
Tương thích với hầu hết các server đang sử dụng hiện nay như Apache,
IIS…
1.2 Tìm hiểu về MYSQL
MySQL là một hệ quản trị cơ sở dữ liệu đa luồng, đa người dùng với ước
tính có khoảng 6 triệu lượt cài đặt. Công ty MySQL AB xây dựng MySQL như là
một phần mềm mã mở dưới giấy phép GNU/GPL. Không như những dự án như
Apache, phần mềm được phát triển bởi cộng đồng công cộng, và bản quyền về
mã nguồn thuộc sở hữu bởi nhiều tác giả riêng lẻ. MySQL được sở hữu và bảo
trợ bởi một công ty, công ty MySQL AB – một công ty Thụy Điển, nơi giữ bản
quyền cho toàn bộ mã nguồn. Công ty phát triển và duy trì hệ thống, hỗ trợ bán
hàng và dịch vụ. MySQL AB được sáng lập bởi David Axmark, Allan Larsson,
và Michael “Monty” Widenius.
MySQL là hệ quản trị cơ sở dữ liệu phổ biến nhất hiện nay và được các
nhà phát triển rất ưa chuộng trong việc phát triển các ứng dụng. Không chỉ dừng
lại các ứng dụng có tầm vừa và nhỏ. Mà ngay cả những ứng dụng có tầm cỡ lớn
cũng đã lựa chọn MySQL, ví dụ như:
10
Yahoo
NASA
Wikipedia
Alcatel
…….
1.2.1 Mười lý do bạn chọn MySQL
Cơ sở dữ liệu MySQL đã trở thành cơ sở dữ liệu mã nguồn mở phổ biến
nhất trên thế giới vì cơ chế xử lý nhanh và ổn định của nó, sự đáng tin cậy cao và
dễ sử dụng. Nó được sử dụng mọi nơi – ngay cả châu Nam Cực - bởi các nhà
phát triển Web riêng lẻ cũng như rất nhiều các tổ chức lớn nhất trên thế giới để
tiết kiệm thời gian và tiền bạc cho những Web sites có dung lượng lớn, phần
mềm đóng gói – bao gồm cả những nhà đi đầu trong lĩnh vực công nghiệp như
Yahoo!, Alcatel-Lucent, Google, Nokia, YouTube và Zappos.com.
MySQL không chỉ là cơ sở dữ liệu mã nguồn mở phổ biến nhất trên thế
giới, nó còn trở thành cơ sở dữ liệu được chọn cho thế hệ mới của các ứng dụng
xây dựng trên nền Linux, Apache, MySQL, PHP/Perl/Python. MySQL chạy trên
hơn 20 flatform bao gồm: Linux, Windows, OS/X, HP-UX, AIX, Netware, mang
đến cho bạn tính linh hoạt trong việc sử dụng.
Dù bạn mới làm quen với công nghệ cơ sở dữ liệu hay là một nhà phát
triển giàu kinh nghiệm hoặc là DBA, MySQL sẽ giúp bạn thành công.
Đây là 10 lý do bạn nên chọn MySQL cho ứng dụng của mình:
Tính linh hoạt
Máy chủ cơ sở dữ liệu MySQL cung cấp đặc tính linh hoạt, có sức chứa
để xử lý các ứng dụng được nhúng sâu với dung lượng chỉ 1MB để chạy các kho
dữ liệu đồ sộ lên đến hàng terabytes thông tin. Sự linh hoạt về flatform là một
đặc tính lớn của MySQL với tất cả các phiên bản của Linux, Unix, và Windows
đang được hỗ trợ. Và dĩ nhiên, tính chất mã nguồn mở của MySQL cho phép sự
tùy biến hoàn toàn theo ý muốn để thêm vào các yêu cầu thích hợp cho database
server.
Tính thực thi cao
Kiến trúc storage-engine cho phép các chuyên gia cơ sở dữ liệu cấu hình
máy chủ cơ sở dữ liệu MySQL đặc trưng cho các ứng dụng đặc thù. Dù ứng dụng
là một hệ thống xử lý giao dịch tốc độ cao hay web site dung lượng lớn phục vụ
hàng triệu yêu cầu mỗi ngày, MySQL có thể đáp ứng khả năng xử lý những đòi
11
hỏi khắt khe nhất của bất kì hệ thống nào. Với các tiện ích tải tốc độ cao, đặc biệt
bộ nhớ caches, và các cơ chế xử lý nâng cao khác, MySQL đưa ra tất cả các vũ
khí cần phải có cho các hệ thống doanh nghiệp khó tính ngày nay.
Có thể sử dụng ngay
Sự đáng tin cậy cao và tính “mì ăn liền” là những tiêu chuẩn đảm bảo của
MySQL. MySQL đưa ra nhiều tùy chọn có thể dùng ngay từ cấu hình tái tạo
chủ/tớ tốc độ cao, để các nhà phân phối thứ 3 đưa ra những giải pháp có thể dùng
ngay duy nhất cho server cơ sở dữ liệu MySQL.
Hỗ trợ giao dịch mạnh
MySQL đưa ra một trong số những engine giao dịch cơ sở dữ liệu mạnh
nhất trên thị trường. Các đặc trưng bao gồm hỗ trợ giao dịch ACID hoàn thiện
( Atomic – tự động, Consistent – thống nhất, Isolated – độc lập, Durable – bền
vững), khóa mức dòng không hạn chế, khả năng giao dịch được phân loại, và hỗ
trợ giao dịch đa dạng (multi-version) mà người đọc không bao giờ gây trở ngại
cho người viết và ngược lại. Tính toàn vẹn của dữ liệu cũng phải được bảo đảm
trong suốt quá trình server có hiệu lực, các mức giao dịch độc lập được chuyên
môn hóa, và phát hiện khóa chết ngay lập tức.
Nơi lưu trữ Web và Data đáng tin cậy
MySQL là nhà máy chuẩn cho các web sites phải trao đổi thường xuyên
vì nó có engine xử lý tốc độ cao, khả năng chèn dữ liệu nhanh ghê gớm, và hỗ trợ
mạnh cho các chức năng chuyên dụng của web như tìm kiếm văn bản nhanh.
Những tính năng này cũng được áp dụng cho môi trường lưu trữ dữ liệu mà
MySQL tăng cường đến hàng terabyte cho các server đơn. Các tính năng khác
như bảng nhớ chính, cây B và chỉ số băm, và bảng lưu trữ đã được cô lại để giảm
các yêu cầu lưu trữ đến 80% làm cho MySQL trở thành lựa chọn tốt nhất cho cả
ứng dụng web và các ứng dụng doanh nghiệp.
Chế độ bảo mật dữ liệu mạnh
Vì bảo mật dữ liệu cho một công ty là công việc số một của các chuyên
gia về cơ sở dữ liệu, MySQL đưa ra tính năng bảo mật đặc biệt chắc chắn dữ liệu
sẽ được bảo mật tuyệt đối. Trong việc xác nhận truy cập cơ sở dữ liệu, MySQL
cung cấp các kĩ thuật mạnh mà chắc chắn chỉ có người sử dụng đã được xác
nhận mới có thể truy nhập được vào server cơ sở dữ liệu, với khả năng này để
12
chặn người dùng ngay từ mức máy khách là điều có thể làm được. SSH và SSL
cũng được hỗ trợ để chắc chắn các kết nối được an toàn và bảo mật. Một đối
tượng framework đặc quyền được đưa ra mà người sử dụng chỉ có thể nhìn thấy
dữ liệu, các hàm mã hóa và giải mã dữ liệu mạnh chắc chắn rằng dữ liệu sẽ được
bảo mật. Cuối cùng, tiện ích backup và recovery cung cấp bởi MySQL và các
hãng phần mềm thứ 3 cho phép backup logic và vật lý hoàn thiện cũng như
recovery toàn bộ hoặc tại một thời điểm nào đó.
Sự phát triển ứng dụng hỗn hợp
Một trong số các lý do khiến cho MySQL là cơ sở dữ liệu mã nguồn mở
phổ biến nhất thế giới là nó cung cấp hỗ trợ hỗn hợp cho bất kì sự phát triển ứng
dụng nào cần. Trong cơ sở dữ liệu, hỗ trợ có thể được tìm thấy trong các stored
procedure, trigger, function, view, cursor, ANSI-standard SQL, và nhiều nữa. Với
các ứng dụng nhúng, thư viện plug-in có sẵn để nhúng vào cơ sở dữ liệu MySQL
hỗ trợ trong bất kì ứng dụng nào. MySQL cũng cung cấp các bộ kết nối như:
ODBC, JDBC, … để cho phép tất cả các form của ứng dụng sử dụng MySQL
như một server quản lí dữ liệu được ưu tiên.
Dễ dàng quản lý
MySQL trình diễn khả năng cài đặt nhanh đặc biệt với thời gian ở mức
trung bình từ lúc download phần mềm đến khi cài đặt hoàn thành chỉ mất chưa
đầy 15 phút. Điều này đúng cho dù flatform là Microsoft Windows, Linux,
Macintosh hay Unix. Khi đã được cài đặt, tính năng tự quản lý như tự động mở
rộng không gian, tự khởi động lại, và cấu hình động sẵn sàng cho người quản trị
cơ sở dữ liệu làm việc. MySQL cũng cung cấp một bộ hoàn thiện các công cụ
quản lý đồ họa cho phép một DBA quản lý, sửa chữa, và điều khiển hoạt động
của nhiều server MySQL từ một máy trạm đơn. Nhiều công cụ của các hãng phần
mềm thứ 3 cũng có sẵn trong MySQL để điều khiển các tác vụ từ thiết kế dữ liệu
và ETL, đến việc quản trị cơ sở dữ liệu hoàn thiện, quản lý công việc, và thực
hiện kiểm tra.
Mã nguồn mở tự do và hỗ trợ 24/7
Nhiều công ty lưỡng lự trong việc giao phó toàn bộ cho phần mềm mã
nguồn mở vì họ tin họ không thể tìm được một cách hỗ trợ hay mạng lưới an toàn
phục vụ chuyên nghiệp, hiện tại, họ tin vào phần mềm có bản quyền để chắc
13
chắn về sự thành công toàn diện cho các ứng dụng chủ chốt của họ. Những lo
lắng của họ có thể được dẹp bỏ với MySQL, sự bồi thường là có trong mạng lưới
MySQL.
Tổng chi phí thấp nhất
Bằng cách sử dụng MySQL cho các dự án phát triển mới, các công ty
đang thấy rõ việc tiết kiệm chi phí. Được hoàn thành thông qua sử dụng server cơ
sở dữ liệu MySQL và kiến trúc scale-out, các doanh nghiệp đã tìm ra cái mà họ
có thể đạt được ở mức ngạc nhiên về khả năng xử lý. Thêm vào đó, tính tin cậy
và dễ duy trì của MySQL ở mức trung bình mà người quản trị cơ sở dữ liệu
không phải mất nhiều thời gian sửa chữa hay vấn đề thời gian chết.
14
1.2.2 Các kiểu dữ liệu trong cơ sở dữ liệu MySQL
Loại dữ liệu numeric: bao gồm kiểu số nguyên và kiểu số chấm động.
- Kiểu dữ liệu số nguyên:
- Kiểu dữ liệu số chấm động:
15
Loại dữ liệu kiể Date and Time
Kiểu dữ liệu Date and Time cho phép bạn nhập dữ liệu dưới dạng chuỗi
ngày tháng hay dạng số.
Dữ liệu kiểu số nguyên:
16
Loại dữ liệu String
Kiểu dữ liệu String chia làm 3 loại: Loại thứ nhất như char( chiều dài cố
định) và varchar( chiều dài biến thiên); loại thức hai là Text hay Blob, Text cho
phép lưu chuỗi rất lớn, Blob cho phép lưu đối tượng nhị phân; loại thứ ba là
Enum và Set.
1.2.3 Các hàm thông dụng trong MySQL
Các hàm trong phát biểu GROUP BY
- Hàm AVG: Hàm trả về giá trị bình quân của cột hay trường trong câu
truy vấn.
- Hàm MIN: Hàm trả về giá trị nhỏ nhất của cột hay trường trong câu
truy vấn.
- Hàm MAX: Hàm trả về giá trị lớn nhất của cột hay trương trong câu
truy vấn.
- Hàm Count: Hàm trả về số lượng mẩu tin trong câu truy vấn.
- Hàm SUM: Hàm trả về tổng các giá trị của trường, cột trong câu truy
vấn.
Các hàm xử lý chuỗi:
- Hàm ASCII: Hàm trả về giá trị mã ASCII của ký tự bên trái chuỗi.
- Hàm Char: Hàm này chuyển đổi kiểu mã ASCII từ số nguyên sang
dạng chuỗi.
- Hàm UPPER: Hàm này chuyển đổi chuỗi sang kiểu chữ hoa.
- Hàm LOWER: Hàm này chuyển đổi chuỗi sang kiểu chữ thường.
- Hàm LEN: Hàm này trả về chiều dài chuỗi.
- Thủ tục LTRIM: Thủ tục loại bỏ khoảng trắng bên trái của chuỗi…
1.3 PHP và MySQL
PHP kết hợp với MySQL sẽ tạo ra các ứng dụng chéo nền (crossplatform), nghĩa là, bạn có thể phát triển ứng dụng trên Windows, và máy chủ là
Unix.
17
1.3.1 Các tính năng chính:
1. Sao lưu: Tạo các bản sao lưu của file và các CSDL, phục hồi file và
CSDL trên máy chủ từ một bản sao lưu, ví dụ từ máy tính cá nhân của người
dùng.
2. Mail:
- Quản lý các tài khoản.
- Tạo, xáo các tạo khoản POP3, thay đổi mật khẩu và định mức tài
nguyên sử dụng.
- Cấu hình tự động hoặc hướng dẫn cấu hình bằng tay cho trình duyệt
mail ở máy khách như Microsoft Outlook, Microsoft Outlook Express…
- Hệ thống trả lời tự động, bộ lọc, danh sách từ chối. Tạo, xóa hoặc thay
đổi.
- Bộ lọc Spam Assassin.
- Thay đổi bản ghi MX đối với mỗi tên miền.
3. Thống kê:
3 chương trình thống kê: : Webalizer Web Stats, AWStats, Analog Stats.
- Thống kê theo tên miền phụ.
- Xem danh sách 300 khách ghé thăm website gần nhất bao gồm thông
tin: IP, thời gian và nơi truy cập, trình duyệt nào và hệ điều hành khách viếng
thăm sử dụng.
- Xem băng thông đã sử dụng.
- Xem nhật ký lỗi của các ngôn ngữ web phục vụ cho công tác bảo trì và
sửa lỗi.
- Xem nhật ký của dịch vụ Apache, có thể tải về.
4. FTP:
- Tạo, xóa tài khoản FTP. Thay đổi mật khẩu và thư mục có thể truy cập
với từng tài khoản.
- Quản lý truy cập nặc danh (anonymous access).
- Quản lý phiên làm việc FTP.
- Thay đổi thông điệp hiển thị trên
5. Quản lý cơ sở dữ liệu MySQL & PostgreSQL
- Tạo, xóa cơ sở dữ liệu.
- Tạo, xóa tài khoản truy cập cơ sở dữ liệu.
- Trình quản lý cơ sở dữ liệu PHPMyAdmin.
1.3.2 Các tính năng khác:
- Đổi mật khẩu tài khoản.
- Quản lý các tên miền thêm vào.
- Trình quản lý file.
18
nhật
ký
FTP.
- Không thật sự thuận lợi và dễ dùng nhưng một loạt các tiện ích có
nhiều tínhnăng rất đáng sử dụng như trình soạn thảo, làm việc với file nén…
- Tiện ích thống kê dụng lượng đã sử dụng và chi tiết tới từng cấp thư
mục.
- Đặt mật khẩu truy cập cho từng thư mục.
- Quản lý tên miền phụ bao gồm cả liên kết tên miền phụ tới tên miền
khác.
- Quản lý các trang thông báo lỗi của website như
- 400 (Yêu cầu sai)
- 401 (Yêu cầu xác thực trước khi truy cập)
- 403 (Cấm truy cập).
- 404 (Trang được yêu cầu không tồn tại)
- 500 (Có lỗi xảy ra trên máy chủ khi xử lý yêu cầu)
- Chương trình Java xây dựng sẵn dành cho truy cập bằng SSH.
- Liên kết một thư mục tới một tên miền khác.
- Quản lý các phần mở rộng của FrontPage.
- Lịch trình chạy lệnh. Cho phép thiết lập các tác vụ định kỳ.
- Quản lý các định nghĩa loại file của Apache.
- Chống việc sử dụng các file của tài khoản từ các website khác.
- Chống việc truy cập site thông qua các địa chỉ IP
- Cài đặt giao thức SSL.
- Quản lý khóa PGP.
- Tiện ích hỗ trợ tìm kiếm trên hệ thống.
- Tài liệu trực tuyến cũng được cung cấp sẵn.
CÁC KỊCH BẢN THIẾT LẬP SẴN:
- Simple CGI Wrapper
- Random HTML – Tự động chèn mã HTML định sẵn vào các file html.
- Simple GuestBook.
- Advanced GuestBook
- Counter – Bộ đếm khách ghé thăm website và số trang khách xem.
19
- Clock-Java
- Countdown - the timer - Đồng hồ đếm ngược.
- CGI mail – Chương trình gửi email viết bằng CGI
- Entropy Banner – hệ thống quản lý banner đơn giản.
- FormMail Clone – form liên hệ đơn giản.
- Entropy Search – Bộ máy tìm kiếm xây dựng sẵn.
- phpBB – Một mã nguồn diễn đàn miễn phí.
- Hai mã nguồn bán hàng trực tuyến: Interchange và Agora
20
CHƯƠNG II : PHÂN TÍCH THIẾT KẾ VÀ HỆ THỐNG
Bài toán đặt ra: Thiết kế website du lịch biển Sầm Sơn Thanh Hóa sử
dụng Php và Mysql
2.1 Giới thiệu đề tài Website.
Sau khi nghiên cứu và tìm hiểu một số website trên mạng về thông tin,
bằng khả năng thực tế có được em đã xây dựng một trang web du lịch biển mà
điểm đến là sầm sơn Thanh Hóa cung cấp thông tin và tour du lịch mới nhất.
Qua việc nghiên cứu và tìm hiểu một số website trên mạng như:
Các website trên có đặc điểm hạn chế như sau.
- Không có nhiều chức năng cho người sử dụng.
- Giao diện nhìn không hấp dẫn.
- Không tìm kiếm được nhiều thông tin
2.2 Phân tích yêu cầu bài toán
Yêu cầu của trang web :
-
Nguồn thông tin chương trình du lịch đa dạng
Giao diện trang web thân thiện, dễ nhìn, dễ sử dụng, màu sắc hài hòa
Thông tin các tour du lịch được cập nhật và sửa đổi thường xuyên
Cho phép tìm kiếm
Từ các yêu cầu trên em đưa ra một số yêu cầu chi tiết hơn cho website của
mình như sau :
- Hiển thị các danh mục các nhóm tin.
- Hiển thị chi tiết các thông tin trong danh mục
- Hiển thị kết quả trong việc tìm kiếm cũng như đăng nhập, đăng ký
- Hiển thị các thông tin.
Chức năng User
- Cho phép đăng ký thành viên
- Cho phép sửa đổi.
- Cho phép đăng ý kiến phản hồi.
Chức năng quản trị
- Quản lý các User: xóa, sửa, nhập thêm User,Admin.
21
- Cập nhật mới các thông tin liên quan, sửa thông tin, xóa thông tin
- Hiển thị thông tin lên nhóm tin, danh mục
Yêu cầu của hệ thống mới
-
Hình thức thông tin đa dạng và sống động
Giao diên thân thiện, dễ nhìn, màu sắc không đối lập
Cung cấp thông tin và phát triển hoạt động liên tục, không ngừng.
Thông tin tour du lịch hình ảnh được cập nhật và sửa đổi thường xuyên
Có khả năng cập nhật, sửa, xoá.
Có khả năng tra và tìm kiếm một cách nhanh chóng.
Tương tác người dùng cao.
Dễ thao tác, dễ sử dụng cho người mới làm quen máy tính.
Đảm bảo tính chính xác với nguồn tin.
Đảm bảo tính ổn định khi gặp các sự cố.
Các chức năng cụ thể.
Đầu ra: Hiển thị thông tin
- Hiển thị thông tin, thông báo.
- Hiển thị các nhóm tin theo danh mục
- Hiển thị thông tin tìm kiếm theo người dùng.
Đầu vào: Quản lý thông tin
- Cập nhật thông tin (sửa, xóa, thêm mới)
- Tiếp nhận thông tin từ người dùng
- Xử lý thành viên (thêm, xóa)
Khuôn thông tin:
- Tiêu đề thông tin
- Nội dung
- Hình ảnh
22
Nhập nội dung tin:
- Thiết kế nhập: thông tin được nhập bằng tay. Đưa ra thông báo nếu có
tin trùng.
- Nội dung: chi tiết thông tin sắp đăng tải.
- Ảnh minh họa.
Update các tin đã đăng tải:
- Cho phép sửa xóa các thông tin hoặc thêm mới các thông tin
Xóa thông tin:
- Xóa theo mục ( rất nhiều các thông tin)
- Xóa theo từng tin
Liên hệ:
- Người đọc phản ánh website/diễn đàn cho phép họ gửi nội dung vào hộp
tin nhắn người quản trị
- Cho phép người dùng đọc, nhập thông tin cá nhân để khẳng định chính
xác người đó
Chức năng tìm kiếm:
- Cho phép người dùng có thể tìm kiếm tin theo từ khóa người dùng nhập
vào.
Chức năng hiển thị thông tin:
- Giao diện bắt mắt, dễ nhìn
- Bố cục hợp lý, khoa học
2.3 Phân tích thiết kế hệ thống
2.3.1 Yêu cầu hệ thống
Khi hoạt động, yêu cầu hệ thống phải đảm bảo đáp ứng tốt các yêu cầu
sau:
Nhập dữ liệu: Thuận tiện, chính xác, có khả năng phát hiện lỗi trong khi
nhập dữ liệu, thông báo lỗi cho người dùng.
Có tính bảo mật, có khả năng kiểm tra tính đúng đắn và an toàn dữ liệu, dễ
bảo trì, nâng cấp nhằm đáp ứng nhu cầu phát sinh trong quá trình quản lý.
Giao diện thân thiện, các chức năng được bố trí thống nhất, khoa học có
khả năng trợ giúp người dùng.
2.3.2 Thông tin vào/ ra của hệ thống
Các thông tin đầu vào:
- Hồ sơ của các thành viên( thông tin cá nhân…)
- Ý kiến đóng góp của người dùng (thắc mắc cần tư vấn, giải đáp…)
Các thông tin đầu ra:
- Đưa ra các thông tin mà người sử dụng quan tâm, tìm kiếm.
23
- Đưa ra các hình ảnh có liên quan đến các chủ đề mà người dùng quan
tâm.
Mô hình UML:
Xác định các tác nhân: Có 3 tác nhân:
- Bạn đọc: Là nhưng người thăm website. Bạn đọc có thể xem tin, đăng
ký thành viên, tìm kiếm thông tin
- Thành viên: Là những người thăm website và đã đăng ký trở thành
thành viên. Ngoài việc có những chức năng giống như bạn đọc, khi vào website,
sau khi đăng nhập, thành viên còn có thể gửi bình luận, đặt tour, gửi tin nhắn đến
quản trị viên.
- Người quản trị(admin): Người quản trị website đăng nhập vào hệ
thống nhằm mục đích quản lý thông tin dữ liệu của website, có toàn quyền thêm
sửa xóa cơ sở dữ liệu.
Xác định các chức năng của tác nhân
Khách:
Xem tin tức
(1)
Tìm kiếm thông tin
(2)
Đăng ký thành viên
(3)
Thành viên:
Xem tin tức
(1)
Tìm kiếm thông tin
(2)
Bình luận
(3)
Đăng nhập
(4)
Gửi tin nhắn tới quản trị viên
(5)
Đặt tour du lịch
(6)
Đổi thông tin
(7)
Đăng xuất ( Thoát)
(8)
Người quản trị:
Xem tin
Tìm kiếm thông tin
Bình luận cho mỗi thông tin
Đăng nhập hệ thống
Quản lý chuyên mục
Quản lý Thành viên
Quản lý bài viết
Quản lý tour du lịch
Quản lý khách sạn
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
24
Quản lý bình luận
(10)
Quản lý thư viện ảnh
(11)
Quản lý tin nhắn
(12)
Quản lý đơn đặt tour
(13)
Đăng xuất hệ thống
(14)
Ta thấy, ở Bạn đọc, Thành viên và người quản trị đều có những chức năng
(1),(2)
Xác định các Usecase
Xem tin
Tìm kiếm tin
Ý kiến cho mỗi tin
Đăng ký thành viên
Đăng nhập
Đổi thông tin
Quản lý chuyên mục
o Xem danh sách chuyên mục (7.1)
o Thêm chuyên mục
(7.2)
o Xóa chuyên mục
(7.3)
o Cập nhật chuyên mục
(7.4)
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
Quản lý Thành viên
Xem danh sách thành viên
Thêm thành viên
Xóa thành viên
Cập nhật thông tin thành viên(8.4)
Quản lý bài viết
Xem danh sách bài viết
Thêm bài viết
Xóa bài viết
Cập nhật thông tin bài viết
Quản lý tour du lịch
Xem danh sách tou du lịch
Thêm tour du lịch
(10.2)
Xóa tour du lịch
Cập nhật thông tin tour du lịch. (10.4)
Quản lý khách sạn
Danh sách khách sạn
Thêm khách sạn
Xóa khách sạn
Cập nhật thông tin khách sạn.
Quản lý bình luận
25
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(8.1)
(8.2)
(8.3)
(9)
(9.1)
(9.2)
(9.3)
(9.4)
(10)
(10.1)
(10.3)
(11)
(11.1)
(11.2)
(11.3)
(11.4)
(12)