Giáo trình mô đun Lập trình web PHP nâng cao (Nghề Công nghệ thông tin - Trình độ cao đẳng) gồm có 7 đơn vị bài học, cung cấp cho người học kiến thức và kỹ năng để có thể thiết kế, xây dựng và phát triển ứng dụng web theo mô hình MVC dựa trên CodeIgniter Framework.
Trang 1BM/QT10/P.ĐTSV/04/04 Ban hành l n: 3 ầ
BÀ R A – VŨNG TÀU, NĂM 2020Ị
Trang 2Tài li u đệ ược biên so n thu c lo i giáo trình ph c v gi ng d y và h cạ ộ ạ ụ ụ ả ạ ọ
t p, l u hành n i b trong Nhà trậ ư ộ ộ ường nên các ngu n thông tin có th đồ ể ượ cphép dùng nguyên b n ho c trích dùng cho các m c đích v đào t o và thamả ặ ụ ề ạ
kh o.ả
M i m c đích khác mang tính l ch l c ho c s d ng v i m c đích kinhọ ụ ệ ạ ặ ử ụ ớ ụ doanh thi u lành m nh s b nghiêm c m.ế ạ ẽ ị ấ
Trang 3LỜI GIỚI THIỆU
Giáo trình “L p trình web PHP nâng cao” đậ ược biên so n d a trên khungạ ự
chương trình đào t o Cao đ ng ngh Công ngh Thông tin đã đạ ẳ ề ệ ược Trườ ngCao đ ng K thu t Công nghê Bà R a – Vũng Tàu phê duy t.ẳ ỹ ậ ị ệ
Tác gi đã nghiên c u m t s tài li u, công ngh hi n đ i k t h p v iả ứ ộ ố ệ ệ ệ ạ ế ợ ớ kinh nghi m làm vi c th c t đ vi t nên giáo trình này. N i dung đệ ệ ự ế ể ế ộ ược tác
gi trình bày cô đ ng, d hi u kèm theo các bả ộ ễ ể ước hướng d n th c hành chiẫ ự
ti t theo nguyên t c quan tâm đ n k t qu đ u ra, kh năng t h c và kế ắ ế ế ả ầ ả ự ọ ỹ năng c n thi t đ HSSV có th hoàn thành ng d ng web qu ng cáo s nầ ế ể ể ứ ụ ả ả
ph m, thẩ ương m i đi n t , … b ng ngôn ng PHP, m t trong nh ng ngônạ ệ ử ằ ữ ộ ữ
ng l p trình ng d ng web thông d ng hi n nay, đáp ng nhu c u th c tữ ậ ứ ụ ụ ệ ứ ầ ự ế
Trong quá trình biên so n, ch c ch n giáo trình còn nhi u thi u sót. Tácạ ắ ắ ề ế
gi r t mong nh n đả ấ ậ ược ý ki n đóng góp c a quý th y/cô và các em h c sinh,ế ủ ầ ọ sinh viên đ ti p t c hoàn thi n h n.ể ế ụ ệ ơ
Xin chân thành c m n quý đ ng nghi p, b n bè đã có nh ng ý ki nả ơ ồ ệ ạ ữ ế đóng góp trong quá trình biên so n giáo trình này.ạ
Bà R a – Vũng Tàu, ngày …… tháng …… năm ………ị
Tham gia biên so nạ
1. Phan H u Phữ ước – Ch biênủ
Trang 5M C L CỤ Ụ
Trang 6GIÁO TRÌNH MÔ ĐUN
Tên mô đun: L p trình web PHP nâng caoậ
Mã mô đun: MĐ29
V trí, tính ch t, ý nghĩa và vai trò c a mô đun:ị ấ ủ
Sau khi h c xong L p trình web PHP & MySQLọ ậ
Cung c p cho ngấ ườ ọi h c ki n th c và k năng đ có th thi t k , xây d ngế ứ ỹ ể ể ế ế ự
và phát tri n ng d ng web theo mô hình MVC d a trên CodeIgniterể ứ ụ ự Framework
M c tiêu c a mô đun:ụ ủ
V ki n th c:ề ế ứ
Trình bày được MVC
Trình bày quá trình route và x lý yêu c u trong site CodeIgniterử ầ
Bi t các bế ướ ạc t o website PHP s d ng framework CodeIgniterử ụ
Trang 7Tham gia xây d ng các ch c năng cho website s d ng frameworkự ứ ử ụ CodeIgniter.
Có th v n d ng đ xây d ng website thể ậ ụ ể ự ương m i, qu ng bá chuyênạ ả nghi p b ng các framework, CMS mã ngu n m : Wordpress, Joomla,ệ ằ ồ ở
…
L u site đúng đư ường d nẫ
Đ t tên t p tin, th m c đúng quy đ nhặ ậ ư ụ ị
T tìm hi u tài li u nâng cao ki n th c và k năng xây d ng ng d ngự ể ệ ế ứ ỹ ự ứ ụ web theo mô hình MVC
N i dung c a mô đun:ộ ủ
Trang 8BÀI 1: T NG QUANỔ
Mã bài: 22.1
Gi i thi u:ớ ệ
MVC là mô hình ng d ng web ph bi n hi n nay. Có nhi u frameworkứ ụ ổ ế ệ ề
mã ngu n m dùng ngôn ng PHP v i mô hình MVC, trong s đó cóồ ở ữ ớ ố framework CodeIgniter
Controller: thành ph n có trách nhi m ti p nh n và x lý các yêu c u g iầ ệ ế ậ ử ầ ử
đ n cho ng d ng, làm nhi m v đi u ph i công vi c gi a View vàế ứ ụ ệ ụ ề ố ệ ữ Model
Vi c phát tri n ng d ng, nâng c p, b o trì và th nghi m tr nên đ nệ ể ứ ụ ấ ả ử ệ ở ơ
gi n và d dàng h n.ả ễ ơ
Trang 9Hình 1.1. Các thành ph n trong mô hình MVC ầ
Hình 1.2. Ho t đ ng c a mô hình MVC ạ ộ ủ
CodeIgniter
Là mã ngu n m giúp d dàng xây d ng ng d ng web theo mô hình MVCồ ở ễ ự ứ ụ
b ng ngôn ng PHP v i nhi u u đi m.ằ ữ ớ ề ư ể
Trang 10Dòng x lý c a ng d ng web CodeIgniterử ủ ứ ụ
T p tin index.php kh i t o các ngu n tài nguyên c n thi t.ậ ở ạ ồ ầ ế
Route phân tích yêu c u đ quy t đ nh công vi c c n x lý.ầ ể ế ị ệ ầ ử
N u t p tin cache đã có, s đế ậ ẽ ược g i tr c ti p đ n trình duy t.ử ự ế ế ệ
An toàn: trước khi controller được n p, yêu c u HTTP và d li u nào đạ ầ ữ ệ ượ csubmit đ u đề ượ ọc l c
Controller n p model, th vi n, helper, và các ngu n tài nguyên c n thi tạ ư ệ ồ ầ ế khác đ x lý đáp ng cho yêu c u c th ể ử ứ ầ ụ ể
Cu i cùng, view đố ược di n gi i sau đó g i cho trình duy t. N u cacheễ ả ử ệ ế
được b t thì view đậ ượ ưc l u vào cache trướ ồc r i m i gi i quy t yêu c u.ớ ả ế ầ
CÂU H I, BÀI T PỎ Ậ
1.1. Tên và ch c năng c a các thành ph n trong mô hình MVC?ứ ủ ầ
1.2. Dòng x lý c a ng d ng web CodeIgniter?ử ủ ứ ụ
Trang 11BÀI 2: T O NG D NG CODEIGNITER Đ U TIÊNẠ Ứ Ụ Ầ
Trang 12Quan hệ
D li uữ ệ
Trang 132 T i mã ngu n và t o siteả ồ ạ
Bước 1: truy c p trang web ậ http://codeigniter.com
Bước 2: click chu t lên bi u tộ ể ượng Download đ t i mã ngu nể ả ồ
Bước 3: gi i nén t p tin đã t iả ậ ả
Bước 4: copy các t p tin và th m c bên trong vàoậ ư ụ C:\xampp\htdocs\IgniterSite1
(C:\xampp là th m c c gói XAMPP đã đ ư ụ ủ ượ c cài đ t trên máy tính ặ )
Trang 14Hình 2.1. Mã ngu n CodeIgniter ồ
Bước 5: T o IgniterSite1 đ n C:\xampp\htdocs\IgniterSite1 trongạ ế DreamWeaver
Trang 15C u trúc th m cấ ư ụ
Hình 2.2. C u trúc t p tin, th m c bên trong site CodeIgniter ấ ậ ư ụ
config: ch a các t p tin c u hìnhứ ậ ấ
controllers: ch a các t p tin đ nh nghĩa controllerứ ậ ị
models: ch a các t p tin đ nh nghĩa l p đ i tứ ậ ị ớ ố ượng model
views: ch a các t p tin giao di n (view)ứ ậ ệ
CÂU H I, BÀI T PỎ Ậ
2.1. T i mã ngu n và t o site tracuudiemả ồ ạ
2.2. Tên th m c ch a các t p tin c u hình?ư ụ ứ ậ ấ
Trang 16T o m t trang đ n gi nạ ộ ơ ả
Đ t tên t p tin, th m c đúng quy t cặ ậ ư ụ ắ
Trang 171.2. Đ c thông tin c u hìnhọ ấ
Cú pháp
Ví d : M t p tin ụ ở ậ application/views/welcome_message.php và c p nh t nhậ ậ ư sau:
Trang 18Truy c p l i trang trên trình duy t đ xem k t qu ậ ạ ệ ể ế ả
1.3. T o thông tin c u hình riêngạ ấ
B1: T o t p tin c u hình ạ ậ ấ application/config/customconfig.php và nh p n iậ ộ dung nh sau:ư
B2: T i t p tin c u hình riêng Mả ậ ấ ở t p tinậ
application/controllers/Welcome.php và c p nh t cho hàm ậ ậ index
B3: Đ c thông tin c u hình riêngọ ấ
M t p tin application/views/welcome_message.php và c p nh t n i dung nhở ậ ậ ậ ộ ư sau:
C u trúc đ a chấ ị ỉ
Đ a ch site theo mô hình MVC có c u trúc t ng quát nh sau:ị ỉ ấ ổ ư
N u không có method thì hàm hành đ ng index s đế ộ ẽ ược g i.ọ
Trang 19controller: l p đ i tớ ố ượng nh n x lý yêu c uậ ử ầ
method: hàm hành đ ng độ ược g i c a controllerọ ủ
arguments: tham s truy n vào hàm hành đ ngố ề ộ
Trang 20Khi đ a ch truy c p đị ỉ ậ ược tìm th y trong t p tin routes.php thì s đấ ậ ẽ ược x lýử theo quy t c bên trong routes.php. Ngắ ượ ạc l i, yêu c u s đầ ẽ ược x lý theo c uử ấ trúc t ng quát (đã trình bày trong M c 3.1).ổ ụ
V i đ nh nghĩa route nh trên, các controller, method và arguments s đớ ị ư ẽ ượ ctruy n khi truy c p đ a ch tề ậ ị ỉ ương ng nh sau:ứ ư
Trang 21Nh phân tích v i các ví d trên, ng d ng c n ph i có controller ư ớ ụ ứ ụ ầ ả home v iớ các hàm index và view.
T o t p tin ạ ậ application/controllers/Home.php v i n i dung bên d i.ớ ộ ướ
Đã t o xong controller home v i các method (hàm hành đ ng) index và view.ạ ớ ộTruy c p trang theo đ a ch c a 3 ví d trên đ xem k t qu ậ ị ỉ ủ ụ ể ế ả
CÂU H I, BÀI T PỎ Ậ
C p nh t t p tin ậ ậ ậ application/config/routes.php và t o các controller đ hi nạ ể ể
th k t qu v i đ a ch truy c p tị ế ả ớ ị ỉ ậ ương ng nh sau:ứ ư
Trang 23Trình bày khái ni m và công d ng c a Controllerệ ụ ủ
T o đạ ượ ớc l p đ i tố ượng k th a controllerế ừ
M i controller đỗ ược đ nh nghĩa trong m t t p tin đ t trong th m cị ộ ậ ặ ư ụ
application/ controllers. M i controller là m t l p đ i t ng đ c d n su tỗ ộ ớ ố ượ ượ ẫ ấ
t ừCI_Controller.
Cú pháp
<?php
defined(‘BASEPATH’) or exit (‘Truy cap trai phep’);
class <TênController> extends CI_Controller{
Trang 25T ch c controller trong th m cổ ứ ư ụ
V i các ng d ng web l n, CodeIgniter cho phép nhà phát tri n tách/t ch cớ ứ ụ ớ ể ổ ứ các controller trong th m c con. Ví d : các trang/ch c năng qu n lý n i dungư ụ ụ ứ ả ộ
được truy c p theo đ a ch ậ ị ỉhttp://localhost/codeignitersite1/quantri
Bước 1: T o th m c application/controllers/quantriạ ư ụ
Bước 2: T o các controller trong th m c application/controllers/quantriạ ư ụ
CÂU H I, BÀI T PỎ Ậ
4.1. T o các controller Chude, Nxb, Sach v i các hàm hành đ ng bên trong,ạ ớ ộ
tương t controller Tacgia đã xây d ng trên.ự ự ở
G I Ý, ĐÁP ÁNỢ
Tham kh o t p tin controller/Tacgia.phpả ậ
Trang 26Bi t khái ni m và công d ng c a viewế ệ ụ ủ
Thi t k đế ế ược view và t i view trong các hàm controllerả
Truy n d li u t controller đ n viewề ữ ệ ừ ế
Truy n d li u t view đ n controller thông qua formề ữ ệ ừ ế
X lý d li u nh n đử ữ ệ ậ ượ ừc t form
Đ m b o an toàn cho ngả ả ười và thi t bế ị
Trang 27Trong m t website có nhi u trang. H u nh các trang đ có b c c, ch c năngộ ề ầ ư ề ố ụ ứ
gi ng nhau, ch khác nhau v n i dung đố ỉ ề ộ ược hi n th trên vùng r ng l n nh t.ể ị ộ ớ ấ Xét giao di n trên, tài li u HTML đ n gi n có th nh sau:ệ ệ ơ ả ể ư
2.1. T o view dùng chungạ
Các trang đ u có b c c và n i dung gi ng nhau trong hai thành ph n (đãề ố ụ ộ ố ầ
được đánh d u trong các khung ch nh t). Chúng ta l n lấ ữ ậ ầ ượ ạt t o các view
tương ng.ứ
Bước 1: T o th m c application/views/sharedạ ư ụ
Trang 28Bước 2: T o t p tin application/views/shared/p1.phpạ ậ
Bước 3: T o t p tin application/views/shared/p2.phpạ ậ
2.2. T o view n i dung cho các trangạ ộ
Quy t c chung: V i m i controller, chúng ta s t o m t th m c đ t bên trongắ ớ ỗ ẽ ạ ộ ư ụ ặ
application/views. Ti p theo, chúng ta s t o các view đ t bên trong th m cế ẽ ạ ặ ư ụ
v t o. Xét controller TacGia trong m c 3 bài trừ ạ ụ ở ước, chúng ta có các hàm
index, add và edit l n l t là các trang Danh sách tác gi , Thêm tác gi và S aầ ượ ả ả ử thông tin tác gi ả
Bước 1: T o th m c ạ ư ụ application/views/tacgia
Bước 2: T o t p tin ạ ậ application/views/tacgia/index.php đ hi n th n i dungể ể ị ộ cho hàm index
L p l i Bặ ạ ước 2 đ t o các t p tin hi n th n i dung cho các hàm ể ạ ậ ể ị ộ add và edit.
T i viewả
C p nh t hàm index trong controller TacGia đ t i các view shared/p1.php,ậ ậ ể ả shared/p2.php và tacgia/index.php
Trang 29Tương t nh v y, c p nh t các hàm _new và edit.ự ư ậ ậ ậ
Ki m tra k t qu các trang theo đ a ch l n lể ế ả ị ỉ ầ ượt
http://localhost/ignitersite1/index.php/tacgia
http://localhost/ignitersite1/index.php/tacgia/add
http://localhost/ignitersite1/index.php/tacgia/edit/1
Truy n d li u đ n viewề ữ ệ ế
Trong ví d bên dụ ưới, chúng ta s truy n danh sách tác gi t hàm index đ nẽ ề ả ừ ế view application/views/tacgia/index.php. Hi n t i, chúng ta ch a truy c p đ nệ ạ ư ậ ế CSDL nên s chúng ta s t o d li u th dẽ ẽ ạ ữ ệ ử ướ ại d ng m ng.ả
Bước 1: Truy n d li u đ n view. Đ truy n d li u vào cho view, chúng taề ữ ệ ế ể ề ữ ệ
ch c n đ t d li u vào tham s th hai c a hàm ỉ ầ ặ ữ ệ ố ứ ủ load->view
Bước 2: X lý d li u nh n đử ữ ệ ậ ược trên view
C p nh t n i dung t p tin application/views/tacgia/index.phpậ ậ ộ ậ
K t quế ả có được khi truy c p đ a chậ ị ỉ http://localhost/ignitersite1/index.php/tacgia
Trang 30Bước 1: C p nh t hàm add trong controller TacGia.ậ ậ
Bước 2: T o t p tin application/views/tacgia/add.phpạ ậ
form_open(‘tacgia/store’): t o th form có thu c tính method= “post”ạ ẻ ộ
và action= “/index.php/tacgia/store” (d li u s đữ ệ ẽ ược chuy n đ n hàm storeể ế
c a controller TacGia).ủ
Bước 3: C p nh t hàm store trong controller TacGiaậ ậ
Trang 31Ki m tra k t qu : m trang ể ế ả ở http://localhost/ignitersite1/index.php/tacgia/add. Không nh p tên, click chu t lên nút Submit ậ ộ L iỗ
Ti p t c m l i trang ế ụ ở ạ http://localhost/ignitersite1/index.php/tacgia/add. Nh pậ tên, click chu t lên nút Submit ộ Thành công
Trang 32Model là l p đ i tớ ố ượng chính truy xu t CSDL Ví d : đ có thấ ụ ể ể
đ c/thêm/xóa/s a d li u trên table TacGia, chúng ta c n t o m t model.ọ ử ữ ệ ầ ạ ộ Trong CodeIgniter, m t model là m t l p đ i tộ ộ ớ ố ượng được d n xu t tẫ ấ ừ
CI_Model. M i model đ c đ nh nghĩa trong m t t p tin, đ t trong th m cỗ ượ ị ộ ậ ặ ư ụ
application/models.
2 T o modelạ
T o t p tin ạ ậ application/models/tacgia_model.php đ đ nh nghĩa m t l p đ iể ị ộ ớ ố
tượng tacgia_model là m t model, th c hi n vi c đ c/thêm/xóa/s a d li uộ ự ệ ệ ọ ử ữ ệ trên table TacGia
Trang 33Đ nh nghĩa các hàm trong modelị
3.1. C p nh t hàm GetList (Đ c nhi u dòng d li u)ậ ậ ọ ề ữ ệ
Trang 343.2. C p nh t hàm GetEntry (Đ c m t dòng d li u theo khóa)ậ ậ ọ ộ ữ ệ
Trang 354.1. Thêm hàm kh i t oở ạ
load->helper: t i th vi n ch a các hàm h tr đ c nhanh các thông tin url,ả ư ệ ứ ỗ ợ ọ
uri, … Có th m t p tin ể ở ậ system/helpers/url_helper.php
xem các hàm bên trong
load->database: t i th vi n h tr truy xu t CSDLả ư ệ ỗ ợ ấ
load->model: t i l p đ i tả ớ ố ượng model
4.2. C p nh t hàm indexậ ậ
4.3. C p nh t t p tin application/views/tacgia/index.phpậ ậ ậ
CÂU H I, BÀI T PỎ Ậ
6.1. T o các model còn l i tạ ạ ương ng v i các table trong CSDL bookstore,ứ ớ
tương t tacgia_model đã th c hi n trong bài.ự ự ệ
G I Ý, ĐÁP ÁNỢ
Tham kh o t p tin models/tacgia_model.phpả ậ
Trang 36BÀI 7: HOÀN CH NH CONTROLLER/VIEWỈ
Mã bài: 22.7
Gi i thi u:ớ ệ
Ba thành ph n trong mô hình MVC ph i h p v i nhau nh th nào sầ ố ợ ớ ư ế ẽ
được trình bày c th và rõ ràng trong bài này.ụ ể
Trang 37Truy c p đ a ch ậ ị ỉ http://localhost/ignitersite1/index.php/tacgia đ xem k t qu ể ế ả
Bước 2: C p nh t hàm edit trong controller TacGiaậ ậ
Bước 3: T o t p tin ạ ậ application/views/tacgia/edit.php
Bước 4: C p nh t hàm update tron controller TacGiaậ ậ
Trang 39TÀI LI U THAM KH OỆ Ả
http://codeigniter.com