Báo cáo Khóa luận tốt nghiệp Công Nghệ Phần Mềm ( Lập trình web )
Nội dung đề tài:
-Tìm hiểu Framework PHP CodeIgniter
-Tìm hiểu Framework CSS Bootstrap
-Xây dựng website thương mại ứng dụng CodeIgnitet và Bootstrap.
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƢỜNG ĐẠI HỌC NGUYỄN TẤT THÀNH
KHOA CÔNG NGHỆ THÔNG TIN
ĐỒ ÁN (KHÓA LUẬN) TỐT NGHIỆP
TÌM HIỂU CODEIGNITER
VÀ XÂY DỰNG WEBSITE THƢƠNG MẠI
Giảng viên hƣớng dẫn : ÔN NHẬT MINH
Sinh viên thực hiện
MSSV
: CHỀNH HƢNG QUYỀN
: 1211506979
Sinh viên thực hiện
MSSV
: NGUYỄN THÀNH PHONG
: 1211506368
Khóa
: 2012 - 2015
Ngành/ chuyên ngành : CÔNG NGHỆ PHẦN MỀM
Tp HCM. tháng 01 năm 2015.
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƢỜNG ĐẠI HỌC NGUYỄN TẤT THÀNH
KHOA CÔNG NGHỆ THÔNG TIN
ĐỒ ÁN (KHÓA LUẬN) TỐT NGHIỆP
TÌM HIỂU CODEIGNITER
VÀ XÂY DỰNG WEBSITE THƢƠNG MẠI
Giảng viên hƣớng dẫn
: ÔN NHẬT MINH
Sinh viên thực hiện
MSSV
: CHỀNH HƢNG QUYỀN
: 1211506979
Sinh viên thực hiện
MSSV
: NGUYỄN THÀNH PHONG
: 1211506368
Khoá
Ngành/ chuyên ngành
: 2012 - 2015
: CÔNG NGHỆ PHẦN MỀM
Tp HCM. tháng 01 năm 2015.
ii
LỜI MỞ ĐẦU
Trong những năm gần đây với sự phát triển vƣợt trội của khoa học kỹ thuật đặc
biệt là công nghệ thông tin, với những ứng dụng của công nghệ thông tin vào các lĩnh
vực đã đóng góp một phần to lớn cho sự nghiệp phát triển của con ngƣời.
Chính thức có mặt ở Việt Nam từ năm 1997, Internet dần trở thành nhu cầu thiết
yếu của ngƣời dân Việt Nam. Sau hơn 17 năm phát triển, Việt Nam đã lọt vào Top 20
nƣớc có ngƣời sử dụng Internet nhiều nhất với 90 triệu ngƣời sử dụng Internet chiếm
36% theo công bố mới nhất từ Cục Thƣơng mại điện tử và công nghệ thông tin
(VECITA), Bộ Công thƣơng, tại hội thảo quốc tế về hợp tác thƣơng mại điện tử Việt
Nam - Nhật Bản tổ chức ngày 29-10-2014 ở Hà Nội. Đặc biệt, khảo sát của VECITA
cho biết 57% số ngƣời truy cập Internet của Việt Nam có tham gia mua hàng trực
tuyến. Đó là lý do chúng tôi chọn đề tài “Xây dựng website thƣơng mại” này nhằm
phục vụ cho ngƣời dùng Internet một cách tiện lời và bảo mật nhất.
Qua việc tìm hiểu Code Igniter và Bootstrap giúp chúng tôi có thể xây dựng
website với tốc độ nhanh, chạy tốt trên mọi thiết bị, có tính bảo mật cao và giao diện
đẹp mắt…
Sự phát triển vƣợt bậc của việc khai thác và quản lí dữ liệu dựa trên nền tảng
ngôn ngữ PHP và MySQL trong cuộc sống đã làm nảy sinh và thúc đẩy sự phát triển
của Kĩ thuật. Từ đó, các nhà quản lí thông tin có thể quản lí thông tin của mình một
cách hiệu quả và an toàn hơn.
Phạm vi đối tƣợng đề tài: Website đƣợc xây dựng nhằm hỗ trợ chủ yếu cho các
đối tƣợng là giới trẻ có sở thích mua bán hàng online.
iii
LỜI CẢM ƠN
Chúng em xin chân thành cảm ơn trƣờng Đại học Nguyễn Tất Thành và Khoa
Công Nghệ Thông Tin đã tạo điều kiện cho chúng em hoàn thành tốt khóa luận này.
Đợt khóa luận này đã truyền đạt cho chúng em nhiều kinh nghiệm quý báu. Những
kinh nghiệm ấy sẽ giúp chúng em hoàn thiện hơn trong công việc và môi trƣờng làm
việc sau này.
Chúng em cũng xin cảm ơn thầy Ôn Nhật Minh đã tận tình hƣớng dẫn và trang bị
cho chúng em những kiến thức cần thiết và hỗ trợ thêm những kiến thức mở rộng cho
chúng em để có thể hoàn thành đề tài khóa luận này một cách trôi chảy.
Dù chúng em đã cố gắng hoàn thành báo cáo khóa luận tốt nghiệp với tất cả nỗ
lực của bản thân, nhƣng do độ hiểu biết cũng nhƣ kinh nghiệm thực tế chƣa đạt đến
mức hoàn hảo của chúng em thì chắc chắn không thể tránh khỏi những thiếu sót nhất
định, rất mong nhận đƣợc sự thông cảm, chia sẻ và tận tình để chúng em có thể hoàn
thành khóa luận tốt hơn.
Trong tƣơng lai, chúng em sẽ nỗ lực thật nhiều để sau đợt khoá luận này sẽ
không làm phụ lòng tin của quý Thầy Cô đã đặt vào chúng em.
Một lần nữa xin cảm ơn quý Thầy Cô.
Tp.HCM, Ngày 22 tháng 01 năm 2015.
Chềnh Hƣng Quyền.
iv
Nguyễn Thành Phong.
NHẬN XÉT CỦA GIẢNG VIÊN HƢỚNG DẪN
……………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
……………………………………………………………………………
Tp.HCM, Ngày 22 tháng 01 năm 2015.
Ôn Nhật Minh
v
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
……………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………
Tp.HCM, Ngày 22 tháng 01 năm 2015
Dƣơng Thành Phết.
vi
MỤC LỤC
CHƢƠNG 1: GIỚI THIỆU ĐỀ TÀI ................................................................................... 1
1.1
Lý do chọn đề tài ................................................................................................... 1
1.2
Mục tiêu................................................................................................................. 1
1.3
Xây dựng lộ trình thực hiện .................................................................................. 1
CHƢƠNG 2: TÌM HIỂU FRAMEWORK CODEIGNITER VÀ FRAMEWORK
BOOTSTRAP ....................................................................................................................... 3
2.1
Tìm hiểu Framework CodeIgniter ......................................................................... 3
2.1.1
Giới thiệu ............................................................................................................... 3
2.1.1.1 Những đặc điểm nổi bật ........................................................................................ 3
2.1.1.2 Những điểm hạn chế ............................................................................................. 4
2.1.2
Cài đặt ................................................................................................................... 5
2.1.3
Tìm hiểu chi tiết CodeIgniter ................................................................................ 6
2.1.3.1 Cấu trúc thƣ mục CodeIgniter ............................................................................... 6
2.1.3.2 CodeIgniter URL ................................................................................................... 6
2.1.3.3 Model .................................................................................................................... 9
2.1.3.4 View .................................................................................................................... 10
2.1.3.5 Controller ............................................................................................................ 10
2.1.3.6 Các thƣ viện ........................................................................................................ 12
2.1.3.7 Các Helper và Plugin .......................................................................................... 15
2.1.3.8 Tự động khai báo................................................................................................. 17
2.1.3.9 Lƣu trữ bộ đệm .................................................................................................... 17
2.1.3.10 Bảo mật ............................................................................................................... 18
2.1.4
Database .............................................................................................................. 19
2.1.4.1 Thiết lập thông tin cơ sở dữ liệu ......................................................................... 19
2.1.4.2 Kết nối cơ sở dữ liệu ........................................................................................... 21
2.2
Giới thiệu Twitter Bootstrap ............................................................................... 22
2.2.1
Giới thiệu ............................................................................................................. 22
2.2.2
Tại sao nên sử dụng Twitter Bootstrap ............................................................... 22
2.2.3
Cài đặt Twitter Bootstrap .................................................................................... 22
2.2.4
Tìm hiểu chi tiết Twitter Bootstrap ..................................................................... 23
2.2.4.1 Cấu trúc thƣ mục bootstrap ................................................................................. 23
2.2.4.2 Các trình duyệt và thiết bị đƣợc hỗ trợ ............................................................... 23
2.2.5
Các thành phần của Twitter Bootstrap ................................................................ 24
2.2.5.1 Twitter Bootstrap CSS ........................................................................................ 24
CHƢƠNG 3: PHÂN TÍCH, THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG ......................... 32
3.1
Phân tích chức năng ............................................................................................ 32
3.1.1
Chức năng của ngƣời dùng ................................................................................. 32
3.1.2
Chức năng của ngƣời quản trị ............................................................................. 32
3.2
Phân tích và thiết kế Cơ Sở Dữ Liệu................................................................... 33
3.2.1
Class diagram ...................................................................................................... 33
3.3.2
Mô tả Bảng .......................................................................................................... 33
3.3.2.1 Bảng Khách hàng ................................................................................................ 33
3.3.2.2 Bảng Sản phẩm.................................................................................................... 34
3.3.2.3 Bảng Danh mục ................................................................................................... 34
3.3.2.4 Bảng Đơn hàng .................................................................................................... 35
3.3.2.5 Bảng Chi tiết đơn hàng ........................................................................................ 35
vii
3.3.2.6 Bảng Đánh giá ..................................................................................................... 36
3.3.2.7 Bảng Danh sách yêu thích ................................................................................... 36
3.3.2.8 Bảng Hình ảnh ..................................................................................................... 36
3.3.2.9 Bảng Màu sắc ...................................................................................................... 37
3.3.2.10 Bảng Size............................................................................................................. 37
3.3.2.11 Bảng Sản phẩm_Màu sắc .................................................................................... 37
3.3.2.12 Bảng Sản phẩm_Size ........................................................................................... 38
3.3.2.13 Bảng Nhà sản xuất............................................................................................... 38
3.3.3
Thiết kế và xây dựng website .............................................................................. 39
3.3.3.1 Công cụ, ứng dụng và framework hỗ trợ lập trình PHP ..................................... 39
3.3.3.2 Thiết kế giao diện ................................................................................................ 39
3.3.3.2.1 Giao diện ngƣời dùng .......................................................................................... 39
3.3.3.2.2 Giao diện trang quản trị....................................................................................... 49
3.3.3.2.3 Xây dựng form Ajax ........................................................................................... 61
CHƢƠNG 4: THỬ NGHIỆM WEBSITE ......................................................................... 64
4.1
Chạy thử .............................................................................................................. 64
4.1.1
Kiểm tra độ tƣơng thích giao diện với các thiết bị có màn hình khác nhau ....... 64
4.1.2
Thử nghiệm quá trình đặt hàng ........................................................................... 68
4.1.2
Chạy thử quá trình kiểm tra đơn hàng của một khách hàng bởi ngƣời quản trị . 70
4.2
Kết quả chạy thử ................................................................................................. 72
CHƢƠNG 5: KẾT LUẬN .................................................................................................. 73
5.1
Kết quả đạt đƣợc ................................................................................................. 73
5.2
Hƣớng phát triển ................................................................................................. 73
PHỤ LỤC ........................................................................................................................... 74
DANH MỤC TÀI LIỆU THAM KHẢO ........................................................................... 75
viii
MỤC LỤC CÁC BẢNG BIỂU, HÌNH
Bảng
Bảng
Bảng
Bảng
Bảng
Bảng
Bảng
Bảng
Bảng
Bảng
Bảng
Bảng
Bảng
Bảng
Bảng
1 Bảng các trình duyệt và thiết bị hỗ trợ CSS Bootstrap ......................................... 23
2 Bảng mạng lƣới của Bootstrap .............................................................................. 25
4 Bảng Khách hàng. ................................................................................................. 33
5 Bảng Sản phẩm. .................................................................................................... 34
6 Bảng Danh mục. .................................................................................................... 34
7 Bảng Đơn hàng. .................................................................................................... 35
8 Bảng Chi tiết đơn hàng. ........................................................................................ 35
9 Bảng Đánh giá. ...................................................................................................... 36
10 Bảng Danh sách yêu thích. .................................................................................. 36
11 Bảng Hình ảnh. ................................................................................................... 36
12 Bảng Màu sắc. ..................................................................................................... 37
13 Bảng Size. ........................................................................................................... 37
14 Bảng Sản phẩm_Màu sắc. ................................................................................... 37
15 Bảng Sản phẩm_Màu sắc. ................................................................................... 38
16 Bảng Nhà sản xuất. ............................................................................................. 38
Hình 1 Table basic .............................................................................................................. 25
Hình 2 Striped rows ............................................................................................................ 25
Hình 3 Bordered table ........................................................................................................ 26
Hình 4 Hover rows ............................................................................................................. 26
Hình 5 Condensed Table .................................................................................................... 26
Hình 6 Form basic .............................................................................................................. 27
Hình 7 Inline Form ............................................................................................................. 27
Hình 8 Các loại button ........................................................................................................ 27
Hình 9 Kích thƣớc các Button ........................................................................................... 27
Hình 10 Các hình dạng ảnh ................................................................................................ 28
Hình 11 Dropdown menu ................................................................................................... 28
Hình 12 Button group ......................................................................................................... 28
Hình 13 Input group ........................................................................................................... 29
Hình 14 Input with button dropdown ................................................................................. 29
Hình 15 Nav Tabs ............................................................................................................... 29
Hình 16 Nav Pills ............................................................................................................... 29
Hình 17 Default navbar ...................................................................................................... 30
Hình 18 Inverted navbar ..................................................................................................... 30
Hình 19 Breadcrumbs ........................................................................................................ 30
Hình 20 Pagination ............................................................................................................. 30
Hình 21 Label ..................................................................................................................... 31
Hình 22 Badges .................................................................................................................. 31
Hình 23 Progress bars ......................................................................................................... 31
Hình 24 List group.............................................................................................................. 31
Hình 25 Panels .................................................................................................................... 31
Hình 26 Class diagram ....................................................................................................... 33
Hình 27 Ảnh Header ........................................................................................................... 39
ix
Hình 28 Ảnh Footer ............................................................................................................ 40
Hình 29 Ảnh chụp giao diện trang chủ ............................................................................... 41
Hình 30 Hiển thị thông tin sản phẩm.................................................................................. 42
Hình 31 Ảnh chụp giao diện trang đăng ký thành viên ...................................................... 43
Hình 32 Ảnh chụp giao diện trang đăng nhập .................................................................... 44
Hình 33 Ảnh chụp giao diện trang danh mục sản phẩm .................................................... 45
Hình 34 Ảnh chụp giao diện trang giỏ hàng ...................................................................... 46
Hình 35 Trang thông tin sản phẩm ..................................................................................... 47
Hình 36 Popup đánh giá sản phẩm ..................................................................................... 48
Hình 37 Link thêm sản phẩm vào danh sách yêu thích ...................................................... 48
Hình 38 Trang đăng nhập quản trị website ........................................................................ 49
Hình 39 Trang thêm sản phẩm mới .................................................................................... 50
Hình 40 Trang quản lý sản phẩm ....................................................................................... 51
Hình 41 Popup cập nhật giá sản phẩm ............................................................................... 52
Hình 42 Popup cập nhật số lƣợng ...................................................................................... 52
Hình 43 Popup chỉnh sửa sản phẩm ................................................................................... 53
Hình 44 Trang quản lý thông tin khách hàng ..................................................................... 53
Hình 45 Popup chỉnh sửa thông tin .................................................................................... 54
Hình 46 Trang danh sách đơn hàng .................................................................................... 54
Hình 47 Trang chi tiết đơn hàng ......................................................................................... 55
Hình 48 Popup chỉnh sửa thông tin sản phẩm .................................................................... 55
Hình 49 Trang quản lý danh mục sản phẩm ....................................................................... 56
Hình 50 Trang thêm danh mục ........................................................................................... 56
Hình 51 Trang chỉnh sửa danh mục ................................................................................... 57
Hình 52 Trang quản lý danh mục màu sắc ......................................................................... 57
Hình 53 Trang thêm danh mục màu sắc ............................................................................. 58
Hình 54 Trang chỉnh sửa danh mục màu sắc ..................................................................... 58
Hình 55 Trang cài đặt hệ thống .......................................................................................... 59
Hình 56 Trang cài đặt hệ thống .......................................................................................... 60
Hình 57 Message box thông báo ........................................................................................ 63
Hình 58 Ảnh chụp website chạy trên Máy tính bảng Ipad 4. ............................................. 64
Hình 59 Chạy thử giao diện website trên Samsung Galaxy Note. ..................................... 65
Hình 60 Chạy thử giao diện website trên Samsung Galaxy S3. ......................................... 66
Hình 61 Chạy thử giao diện website trên Iphone 5. ........................................................... 67
Hình 62 Demo chọn mua sản phẩm ................................................................................... 68
Hình 63 Demo kết quả chọn mua sản phẩm ....................................................................... 69
Hình 64 Demo trang quản lý giỏ hàng ............................................................................... 69
Hình 65 Demo điền thông tin đặt hàng .............................................................................. 70
Hình 66 Demo kết quả đặt hàng ......................................................................................... 70
Hình 67 Demo danh sách đơn hàng.................................................................................... 71
Hình 68 Demo trang thông tin chi tiết đơn hàng ................................................................ 71
x
KÍ HIỆU CÁC CỤM TỪ VIẾT TẮT
AJAX:
Asynchronous JavaScript and XML
SEO:
Search Engine Optimization –Tối ƣu hóa công cụ tìm kiếm
CNTT:
Công nghệ thông tin
CRUD:
Create Read Update Delate
CSDL:
Cơ sở dữ liệu
Inc:
Incorporated – Tập đoàn, tập thể .
KB:
KiloByte.
MB:
MegaByte.
MVC:
Model, View, Controller.
ODBC:
Open Database Connectivity – Kết nối cơ sở dữ liệu mở.
ORM:
Object Relational Mapping .
PDF:
Portable Document Format – Định dạng Tài liệu Di động.
PHP:
Hypertext Preprocessor.
RSS:
Really Simple Syndication.
SQL:
Structured Query Language – Ngôn ngữ truy vấn mang tính cấu trúc.
URI:
Uniform Resource Identifier – Định danh tài nguyên.
URL:
Uniform Resource Locator – Định vị tài nguyên thống nhất .
XSS:
Cross-Site Scripting (Dùng X để phân biệt với CSS).
xi
CHƢƠNG 1:
GIỚI THIỆU ĐỀ TÀI
1.1 Lý do chọn đề tài
-
Xây dựng ứng dụng phục vụ nhu cầu mua sắm trực tuyến mà hiện nay đang
rất phổ biến trên thế giới.
-
Mong muốn xây dựng website có nhiều chức năng, xử lý nhanh, bảo mật cao,
tƣơng thích với nhiều loại thiết bị có độ phân giải màn hình khác nhau
-
Nghiên cứu cấu trúc của một mô hình MVC
-
Tìm kiếm cho bản thân một framework PHP phù hợp.
-
Nâng cao kỹ năng lập trình, tƣ duy sáng tạo và giải quyết vấn đề.
1.2 Mục tiêu
-
Tìm hiểu thị trƣờng mua bán hàng trực tuyến hiện nay.
-
Khảo sát về mặt chức năng, giao diện, dữ liệu từ các website: zalora.vn,
lazada.vn, mwc.com, balohanghieu.com,…
-
Xây dựng lộ trình phát triển website dựa vào kết quả khảo sát ở trên.
-
Tìm hiểu framework Code Igniter:
o Hiểu rõ mô hình MVC và ứng dụng vào website
o Lập trình hƣớng đối tƣợng
o Cách sử dụng
o Các thƣ viện hỗ trợ
-
Tìm hiểu framework Boostrap để xây dựng giao diện đẹp và tƣơng thích các
thiết bị có độ phân giải khác nhau nhƣ: Desktop, Tablet, Mobile
-
Nâng cao kĩ năng lập trình, khả năng phân tích giải quyết vấn đề.
1.3 Xây dựng lộ trình thực hiện
1
Chúng tôi đã thảo luận và kết quả là đƣa ra một lộ trình cho đề tài nghiên cứu
này nhƣ sau
Bƣớc 1: Tìm hiểu thị trƣờng mua bán hàng trực tuyến hiện nay.
Bƣớc 2: Khảo sát các website tƣơng tự về mặt chức năng, giao diện, dữ liệu…
Bƣớc 3: Định hƣớng phát triển website dựa vào kết quả khảo sát ở trên.
Bƣớc 4: Tìm hiểu framework Code Igniter để xây dựng cấu trúc, xử lý… cho
website.
Bƣớc 5: Tìm hiểu framework Boostrap để xây dựng giao diện đẹp và tƣơng thích
các thiết bị có độ phân giải khác nhau.
Bƣớc 6: Phân tích, thiết kế cơ sở dữ liệu.
Bƣớc 7: Thiết kế và xây dựng giao diện, hệ thống.
Bƣớc 8: Kiểm tra, chạy thử
Thêm dữ liệu mẫu.
Xử lý, bảo mật, tốc độ…
Mức độ tƣơng thích với các trình duyệt, thiết bị khác nhau.
Kiểm tra chuẩn Seo.
Kiểm tra chuẩn Web bán hàng online.
Bƣớc 9: Thực hiện đƣa website lên Host.
2
CHƢƠNG 2:
TÌM HIỂU FRAMEWORK CODEIGNITER VÀ
FRAMEWORK BOOTSTRAP
2.1 Tìm hiểu Framework CodeIgniter
2.1.1 Giới thiệu
CodeIgniter là một nền tảng ứng dụng web nguồn mở đƣợc viết bằng ngôn ngữ
PHP bởi Rick Ellis (CEO của EllisLab, Inc). Phiên bản đầu tiên đƣợc phát hành ngày
28-02-2006, phiên bản hiện tại: 1.7.2 (phát hành ngày 11-09-2009). Ý tƣởng xây dựng
CodeIgniter đƣợc dựa trên Ruby on Rails, một nền tảng ứng dụng web đƣợc viết bằng
ngôn ngữ Ruby. Hiện tại, CodeIgniter đang đƣợc phát triển bởi ExpressionEngine
Development Team thuộc EllisLab, Inc.
Download CodeIgniter tại http://www.codeigniter.com/download
2.1.1.1 Những đặc điểm nổi bật
Đƣợc thiết kế theo mô hình Model-View-Controller: Mô hình MVC giúp tách
thành phần hiển thị giao diện (presentation) và xử lý (business logic) của một phần
mềm thành những thành phần độc lập, từ đó giúp cho việc thiết kế, xử lý và bảo trì mã
nguồn dễ dàng, đồng thời tăng khả năng mở rộng của phần mềm. CodeIgniter vận
dụng mô hình này trong thiết kế, giúp tách biệt các tập tin giao diện với các tập tin xử
lý dữ liệu, nâng cao khả năng quản lý và dễ bảo trì.
Nhỏ gọn: Gói cài đặt chỉ 404KB (không bao gồm phần User Guide). So với các
PHP framework khác nhƣ CakePHP (1.3MB), Symfony (5.08MB) hay Zend
Framework (5.66MB)…kích thƣớc của CodeIgniter giúp giảm thiểu đáng kể không
gian lƣu trữ.
3
Tốc độ nhanh: CodeIgniter đƣợc đánh giá là PHP framework có tốc độ nhanh
nhất hiện nay. Bằng cơ chế lƣu nội dung vào bộ đệm (cache), kiểm tra bộ đệm trƣớc
khi tiến hành thực hiện yêu cầu, CodeIgniter giảm số lần truy cập và xử lý dữ liệu, từ
đó tối ƣu hóa tốc độ tải trang.
Miễn phí: CodeIgniter đƣợc phát hành dƣới giấy phép Apache/BSD mở rộng,
cho phép ngƣời dùng tự do thay đổi, phát triển và phân phối mã nguồn.
Hỗ trợ Search Engine Optimization: Cấu trúc URL của CodeIgniter rất thân
thiện với các robot tìm kiếm.
Hệ thống thƣ viện phong phú: CodeIgniter cung cấp thƣ viện phục vụ cho
những tác vụ thƣờng gặp nhất trong lập trình web, chẳng hạn nhƣ truy cập cơ sở dữ
liệu, gửi email, kiểm tra dữ liệu, quản lý session, xử lý ảnh…đến những chức năng
nâng cao nhƣ mã hóa, bảo mật…
Bảo mật hệ thống: Cơ chế kiểm tra dữ liệu chặt chẽ, ngăn ngừa XSS và SQL
Injection của CodeIgniter giúp giảm thiểu các nguy cơ bảo mật cho hệ thống.
2.1.1.2 Những điểm hạn chế
Chƣa hỗ trợ Object-Relational Mapping: Object Relational Mapping (ORM)
là một kỹ thuật lập trình, trong đó các bảng của cơ sở dữ liệu đƣợc ánh xạ thành các
đối tƣợng trong chƣơng trình. Kỹ thuật này giúp cho việc thực hiện các thao tác trong
cơ sở dữliệu (Create Read Update Delate – CRUD) dễ dàng, mã nguồn ngắn gọn hơn.
Hiện tại, CodeIgniter vẫn chƣa hỗ trợ ORM.
Chƣa hỗ trợ AJAX: AJAX (Asynchronous JavaScript and XML) đã trở thành
một phần không thể thiếu trong bất kỳ ứng dụng Web 2.0 nào. AJAX giúp nâng cao
tính tƣơng tácgiữa ngƣời dùng và hệ thống, giúp cho ngƣời dùng có cảm giác nhƣ
đang sử dụng ứng dụng desktop vì cácthao tácđều diễn ra “tức thời”. Hiện tại,
CodeIgniter vẫn chƣa có thƣ viện dựng sẵn nào để hỗ trợ xây dựng ứng dụng AJAX.
Lập trình viên phải sử dụng cácthƣ viện bên ngoài, nhƣ jQuery, Script.aculo.us,
Prototype hay Mootools…
4
Chƣa hỗ trợ một số module thông dụng: So sánh với các framework khác,
CodeIgniter không có các module thực thi một số tác vụ thƣờng gặp trong quá trình
xây dựng ứng dụng web nhƣ Chứng thực ngƣời dùng (User Authorization), Trình phân
tích RSS (RSS Parser) hay Trình xử lý PDF…
Chƣa hỗ trợ Event-Driven Programming: Event-Driven Programming (EDP)
là một nguyên lý lập trình, trong đó các luồng xử lý của hệ thống sẽ dựa vào các sự
kiện, chẳng hạn nhƣ click chuột, gõ bàn phím…Đây không phải là một khuyết điểm to
lớn của CodeIgniter vì hiện tại, chỉ có một số ít framework hỗ trợ EDP, bao gồm
Prado, QPHP và Yii.
2.1.2 Cài đặt
Yêu cầu hệ thống: CodeIgniter có thể hoạt động trên nhiều hệ điều hành và
server, yêu cầu có cài đặt PHP phiên bản 4.x hoặc cao hơn; hệ quản trị cơ sở dữ liệu:
MySQL (4.1+),
MySQLi, Mircrosoft SQL Server, Postgres, Oracle, SQLite, và
ODBC.
Hƣớng dẫn cài đặt:
1. Download bộ nguồn CodeIgniter tại website http://codeigniter.com/, phiên
bản hiện tại: 2.2 (stable) và 3.0 (develop) (Tháng 1 năm 2015).
2. Mở tập tin application/config/config.php bằng một chƣơng trình
soạn thảo, thay đổi giá trị $config['base_url']. Đây đƣờng dẫn tuyệt đối đến
thƣ mục CodeIgniter trên server.
3. Nếu ứng dụng có tƣơng tác với cơ sở dữ liệu, thiết lập các giá trị cần thiết
trong tập tin application/config/database.php.
4. Upload tất cả thƣ mục và tập tin của CodeIgniter lên server. Để nâng cao tính
bảo mật hệ thống, ngƣời dùng có thể đổi tên thƣ mục system của CodeIgniter. Sau khi
đổi tên, ngƣời dùng phải thay đổi giá trị biến $system_folder trong tập tin
index.php.sadsad
5
2.1.3 Tìm hiểu chi tiết CodeIgniter
2.1.3.1 Cấu trúc thƣ mục CodeIgniter
Tập tin index.php đƣợc xem nhƣ Controller đầu vào, tiếp nhận các yêu cầu từ
phía Client và chuyển các yêu cầu này cho hệ thống xử lý.
Thƣ mục system bao gồm phần lõi của CodeIgniter. Chúng bao gồm các thƣ viện
xây dựng sẵn, các tập tin ngôn ngữ, ghi chú về hệ thống. Trong số đó, các thƣ mục sau
khá quan trọng:
- Thƣ mục application: Dành cho lập trình viên, các tập tin đƣợc lập trình cho
ứng dụng sẽ lƣu trong thƣ mục này.
- Thƣ mục cache: Bộ đệm của hệ thống, chứa các trang đã đƣợc xử lý trƣớc đó.
- Thƣ mục helpers: Chứa các hàm hỗ trợ cho lập trình viên khi viết ứng dụng.
- Thƣ mục libraries: Chứa các thƣ viện dựng sẵn của CodeIgniter.
Các tập tin của ứng dụng sẽ đƣợc lƣu trong thƣ mục system/application, trong
đó:
- Thƣ mục config: Chứa các tập tin cấu hình hệ thống.
- Thƣ mục controllers: chứa các lớp controller.
- Thƣ mục errors: chứa các tập tin lỗi.
- Thƣ mục helpers: chứa các hàm tiện ích do ngƣời dùng định nghĩa.
- Thƣ mục hooks: chứa các tập tin để mở rộng mã nguồn CodeIgniter.
- Thƣ mục language: chứa các tập tin ngôn ngữ.
- Thƣ mục libraries: chứa các thƣ viện cho ngƣời dùng dùng định nghĩa.
- Thƣ mục models: chứa các lớp model.
- Thƣ mục views: chứa các lớp view.
2.1.3.2 CodeIgniter URL
Theo mặc định, cấu trúc URL của CodeIgniter đƣợc thiết kế dựa vào các segment
thay cho kiểu query truyền thống. Cách tiếp cận này giúp URL trở nên ngắn gọn, có ý
6
nghĩa, dễ ghi nhớ và thân thiện với các bộ máy tìm kiếm. Một URL trong CodeIgniter
có dạng: domain.com/index.php/controller/method/param/…,trong
đó:
- Segment controller là tên của lớp controller đƣợc gọi.
- Segment method là tên của phƣơng thức trong lớp controller ở trên.
- Segment param là các đối số của phƣơng thức đó.
Nhƣ vậy, URI domain.com/index.php/product/view/1 sẽ mang ý
nghĩa: Gọi đến phƣơng thức view() thuộc lớp Product với đối số truyền vào bằng 1.
Định tuyến URI (URI Routing)
Trong thực tế, URI domain.com/index.php/product/view/1 lại không
thân thiện với các bộ máy tìm kiếm bằng URI :
domain.com/index.php/product/view/apple-ipad-1.
CodeIgniter cho phép lập trình viên có thể thay đổi cơ chế xử lý URL mặc định
thông qua chức năng Định hƣớng URI bằng cách thiết lập các quy luật trong tập tin
application/config/routes.php. Tập tin này chứa mảng $route, với
khóa là URI mới và giá trị là URI cũ. Các quy luật đƣợc đọc theo thứ tự từ trên xuống,
quy luật trƣớc có độƣu tiên cao hơn quy luật sau. CodeIgniter cho phép sử dụng các ký
tự đại diện để thay thế. CodeIgniter đã quy định sẵn hai ký tự đại diện:
- :num tƣơng ứng với các giá trị số.
- :any tƣơng ứng với bất kỳ giá trị nào.
7
Ví dụ:
$route['product/view/(:num)'] = "product/view/$1";
Ý nghĩa: Gọi đến phƣơng thức view() trong lớp Product với tham số truyền
vào là giá trị kiểu số.
$route['product/:any'] = "product/find_product";
Ý nghĩa: Tất cả các yêu cầu bắt đầu bằng product sẽ gọi đến hàm find_product()
của lớp Product. Ta cũng có thể sử dụng biểu thức chính quy để thiết lập các quy luật.
Chẳng hạn:
$route['product/([a-z]+)/(\d+)'] = "$1/id_$2";
Thêm hậu tố vào URL
Các bộ máy tìm kiếm có xu hƣớng thân thiện hơn với các tập tin HTML.
Bằng cách thay đổi giá trị biến $config['url_suffix'] trong tập tin
system/application/config/config.php, ta có thể thêm hậu tố HTML
hay bất cứ hậu tố nào khác vào cho URL.
Ví dụ: với $config['url_suffix'] = '.html', URL của ta sẽ nhƣ
sau:
domain.com/index.php/controller/method/param.html
Loại bỏ chuỗi index.php trong URL: Theo mặc định, chuỗi index.php đƣợc
thêm vào URL. Để loại bỏ chuỗi này, ta có thể sử dụng một tập tin .htaccess có nội
dung nhƣ sau:
Options +FollowSymLinks All -Indexes
RewriteEngine On
RewriteCond
$1
!^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
8
2.1.3.3 Model
Model là những lớp đƣợc xây dựng nhằm thực hiện việc trao đổi thông tin với cơ
sở dữliệu. Một lớp Model có thể thực hiện các tác vụ truy vấn, thêm, xóa, cập nhật dữ
liệu.
Trong CodeIgniter, việc khai báo các lớp model dành cho một Bảng nào đó là
không cần thiết, vì trong controller của Bảng đó, ta có thể gọi đến thƣ viện database để
thực hiện các thao tác với cơ sở dữ liệu. Tuy nhiên, để tiện cho việc quản lý, xây dựng
lớp model cho một Bảng đƣợc khuyến khích.
Khi khai báo một lớp model, ta cần tuân theo một số quy tắc:
- Tên lớp đƣợc viết hoa chữ đầu tiên, phần còn lại viết thƣờng.
Ví dụ: User_model, Blog_model, Article_model…
- Tên tập tin đƣợc đặt nhƣ tên lớp, và đƣợc đặt trong thƣ mục
application/models/. Các thƣ mục có thể đƣợc lƣu lồng vào nhau để thuận
tiện cho việc quản lý. Ví dụ:
application/models/user_model.php,
application/models/front_end/blog_model.php,
application/models/back_end/article_model.php…
Bắt buộc phải kế thừa từ lớp Model. Trong hàm tạo của lớp con, phải gọi đến
hàm tạo của lớp cha.
Để sử dụng model trong controller, ta sử dụng đoạn mã sau:
$this->load->model('model_name');
Trong đó, model_name là tên của lớp model. Nếu lớp model đƣợc lƣu trong một
thƣ mục, ta cần ghi rõ đƣờng dẫn đến thƣ mục đó. Ví dụ lớp Blog_model đƣợc lƣu
trong thƣ mục application/models/front_end/blog_model.php. Để sử
dụng lớp này, ta sử dụng đoạn mã sau:
$this->load->model('front_end/blog_model');
Sau khi load lớp model, ta có thể sử dụng lớp này trong chƣơng trình bằng cách
gọi $this->model_name->method();
9
- Xem thêm -