Tải bản đầy đủ (.pdf) (80 trang)

Xây dựng website bán và giới thiệu dịch vụ cho cửa hàng HPCMOBILE thái nguyên

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.4 MB, 80 trang )

LỜI CAM ĐOAN
Em xin cam đoan rằng:
Kết quả nghiên cứu trong đồ án này là hoàn toàn trung thực và chưa từng
được sử dụng hoặc công bố trong bất kỳ công trình nào khác.
Mọi sự giúp đỡ cho việc thực hiện đồ án này đã được cám ơn và các thông
tin trích dẫn trong đồ án đều được ghi rõ nguồn gốc.
Sinh viên

Nguyễn Văn Hòa

1


LỜI CẢM ƠN
Để hoàn thành đề tài nghiên cứu của mình đúng thời gian quy định, em xin
chân thành cảm ơn Ban giám hiệu nhà trường và các thầy giáo, cô giáo trường
Đại học công nghệ thông tin và truyền thông nói chung, các thầy cô giáo bộ
môn Mạng và Truyền thông nói riêng đã giúp đỡ và tạo điều kiện cho em học
tập và thực hiện đề tài nghiên cứu này.
Em xin chân thành cảm ơn thầy giáo Trịnh Văn Hà- Giáo viên hướng dẫn
em- Người đã luôn tận tình giúp đỡ em giải quyết vướng mắc khi thực hiện đề tài
nghiên cứu. Mặc dù thời gian làm việc rất bận song thầy vẫn luôn dành thời gian
hướng dẫn em mỗi khi gặp khó khăn trong quá trình thực hiện đề tài nghiên cứu.
Bên cạnh đó là sự giúp đỡ của các bạn trong lớp đã giúp đỡ em tìm hiểu sâu
hơn về ngôn ngữ lập trình PHP & MySQL, ngôn ngữ mà em dùng để xây dựng
chương trình demo trong đợt làm đề tài này.
Đề tài nghiên cứu đã hoàn thiện nhưng không tránh khỏi những thiếu sót,
em rất mong được sự đóng góp ý kiến của các thầy cô và các bạn đề em có thể
hoàn thiện hơn trong những đợt báo cáo lần sau.
Em xin chân thành cảm ơn !
Sinh viên



2


MỤC LỤC
LỜI CAM ĐOAN ...................................................................................................1
LỜI CẢM ƠN .........................................................................................................2
MỤC LỤC...............................................................................................................3
MỞ ĐẦU.................................................................................................................6
CHƯƠNG 1. CƠ SỞ LÝ THUYẾT .......................................................................7
1.1.Tìm hiểu ngôn ngữ PHP................................................................................7
1.2. Giới thiệu MySQL........................................................................................9
1.3. Mô hình MVC ..............................................................................................9
1.4. Giới thiệu về Codeigniter Framework 2.x .................................................11
1.4.1. Tổng quan ...........................................................................................11
1.4.2. Cài đặt .................................................................................................14
1.4.3. Cấu trúc CodeIgniter...........................................................................17
1.4.4. Các helper và plugin ...........................................................................24
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH THIẾT KẾ HỆ THỐNG ...............26
2.1. Khảo sát hiện trạng....................................................................................26
2.2. Phân tích các chức năng của hệ thống .......................................................28
2.2.1. Các chức năng của đối tượng Khách hàng..........................................29
2.2.2. Chức năng của Admin.........................................................................30
2.3. Biểu đồ phân tích thiết kế hệ thống............................................................33
2.3.1. Biểu đồ Use case tổng quát .................................................................33
2.3.2. Biểu đồ hoạt động ...............................................................................35
2.3.3. Biểu đồ trình tự ...................................................................................40
2.3.4. Thiết kế biểu đồ lớp ............................................................................44
CHƯƠNG 3: XÂY DỰNG DEMO ......................................................................46
3.1. Giao diện trang chủ ....................................................................................46

3.2. Giao diện đăng ký và đăng nhập của người dùng ......................................47
3.3. Giao diện thông tin chi tiết sản phẩm.........................................................48
3.4. Giao diện dịch vụ .......................................................................................49
3.5. Giao diện quản trị.......................................................................................51
KẾT LUẬN...........................................................................................................55
TÀI LIỆU THAM KHẢO.....................................................................................56
DANH MỤC HÌNH ẢNH
Hình 1.1.Mô hình MVC ......................................................................................... 9
3


Hình 1.2. Biểu đồ trình tự mô hình MVC ............................................................ 11
Hình 1.3. Cấu hình xampp_start .......................................................................... 15
Hình 1.4. Cấu hình xampp_stop........................................................................... 15
Hình 1.5. Thư mục của CodeIgniter Framework 2.2.1 ........................................ 16
Hình 1.6. Thư mục application ............................................................................ 16
Hình 1.7. Sơ đồ thể hiện dòng chảy dữ liệu trong CodeIgniter ........................... 17
Hình 2.1. Biểu đồ user case tổng quát.................................................................. 33
Hình 2.2. Biểu đồ use case quản lý sản phẩm...................................................... 34
Hình 2.3. Biểu đồ use case quản lý khách hàng................................................... 34
Hình 2.4.Biểu đồ use case quản lý đơn hàng ....................................................... 35
Hình 2.5. Biểu đồ hoạt động chức năng đăng nhập vào hệ thống........................ 35
Hình 2.6. Biểu đồ hoạt động chức năng đăng xuất .............................................. 36
Hình 2.7. Biểu đồ hoạt động chức năng Tìm kiếm .............................................. 36
Hình 2.8. Biểu đồ hoạt động chức năng đăng kí thành viên ................................ 37
Hình 2.9. Biểu đồ hoạt động chức năng xem thông tin về sản phẩm................... 37
Hình 2.10. Biểu đồ hoạt động chức năng đặt hàng .............................................. 38
Hình 2.11. Biểu đồ hoạt động chức năng xoá Đơn hàng ..................................... 38
Hình 2.12. Biểu đồ hoạt động chức năng thêm sản phẩm.................................... 39
Hình 2.13. Biểu đồ hoạt động chức năng sửa thông tin sản phẩm....................... 39

Hình 2.14. Biểu đồ hoạt động chức năng xoá sản phẩm...................................... 40
Hình 2.15. Biểu đồ trình tự chức năng đăng nhập ............................................... 40
Hình 2.16. Biểu đồ trình tự chức năng đăng xuất ................................................ 41
Hình 2.17. Biểu đồ trình tự chức năng đăng ký thành viên ................................. 41
Hình 2.18. Biểu đồ trình tự chức năng tìm kiếm.................................................. 42
Hình 2.19. Biểu đồ trình tự chức năng thêm mới sản phẩm ................................ 42
Hình 2.20. Biểu đồ trình tự chức năng sửa thông tin sản phẩm........................... 43
Hình 2.21. Biểu đồ trình tự chức năng xóa sản phẩm.......................................... 43
Hình 2.22. Biểu đồ trình tự chức năng đặt hàng. ................................................. 44
4


Hình 2.23 Biểu đồ lớp .......................................................................................... 45
Hình 3.1.Giao diện trang chủ ............................................................................... 46
Hình 3.2: Giao diện form đăng nhập.................................................................... 47
Hình 3.3: Giao diện form đăng ký thành viên...................................................... 47
Hình 3.4: Giao diện form thông tin chi tiết về sản phẩm hoặc dịch vụ. .............. 48
Hình 3.5: Giao diện tin tức................................................................................... 48
Hình 3.6 Giao diện Dịch vụ tại cửa hàng............................................................. 49
Hình 3.7: Giao diện chi tiết dịch vụ tại cửa hàng và báo giá và bảo hành........... 49
Hình 3.8: Giao diện gửi liên hệ............................................................................ 50
Hình 3.9: Giao diện danh mục dịch vụ sửa chữa điện thoại. ............................... 50
Hình 3.10: Giao diện dịch vụ sửa chữa máy tính................................................. 51
Hình 3.11: Giao diện đăng nhập của admin......................................................... 51
Hình 3.12: Giao diện quản lý thành viên. ............................................................ 52
Hình 3.13: Giao diện quản lý sản phẩm và dịch vụ. ............................................ 52
Hình 3.14: Giao diện quản lý đơn hàng. .............................................................. 53
Hình 3.15: Giao diện quản lý liên hệ của khách hàng. ........................................ 53
Hình 3.16: Giao diện quản lý bài viết. ................................................................. 54


5


MỞ ĐẦU
Với quá trình phát triển công nghệ khoa học và kỹ thuật thì Internet đã đóng
vai trò quan trọng, nó đã nhanh chóng phát triển trên toàn quốc. Việc áp dụng
những công nghệ vào các lĩnh vực đời sống của con người ngày càng tăng và
không ngừng can thiệp vào hầu hết các công việc. Công nghệ thông tin là một
trong những ngành khoa học đó.
Với công nghệ Web sẽ giúp bạn đưa những thông tin mong muốn của mình
lên mạng Internet cho mọi người cùng xem một cách dễ dàng với các công cụ và
các ngôn ngữ lập trình khác nhau. Sự ra đời của các ngôn ngữ lập trình cho phép
chúng ta xây dựng các trang web đáp ứng các yêu cầu của người sử dụng .PHP là
kịch bản trên phía trình chủ cho phép chúng ta xây dựng trang Web trên cơ sở dữ
liệu.Với nhiều ưu điểm nổi bật mà PHP và MySQL được rất nhiều người sử dụng.
Với lý do chọn đó,được sự hướng dẫn và giúp đỡ của thầy giáo Thạc sĩ
Trịnh Văn Hà,em đã chon đề tài: “Xây dựng website bán và giới thiệu dịch vụ
cho cửa hàng HPCMOBILE Thái Nguyên.” làm đề tài báo cáo.
Vì khả năng và thời gian còn hạn chế, Website không tránh khỏi có những
thiếu sót nhất định, rất mong sự đóng góp ý của thầy cô và các bạn để Website
được hoàn thiện hơn.

6


CHƯƠNG 1. CƠ SỞ LÝ THUYẾT
1.1.Tìm hiểu ngôn ngữ PHP
Giới thiệu.
Lịch sử ra đời: Năm 1995, Rasmus Lerdorf tạo ra PHP nhằm giải quyết
việc viết lặp đi lặp lại cùng đoạn mã khi tạo các trang. Ban đầu tác giả chỉ có ý

định tạo bộ phân giải đơn giản để thay thế các thẻ lệnh trong file HTML bằng các
đoạn mã lệnh viết bằng C.
PHP là gì? PHP là chữ viết tắt của “Personal Home Page” do Rasmus
Lerdorf tạo ra năm 1994.Vì tính hữu dụng của nó và khả năng phát triển, PHP bắt
đầu được sử dụng trong môi trường chuyên nghiệp và nó trở thành “PHP
:Hypertext Prerocessor”
Tại sao cần dùng PHP?
PHP được sử dụng để phát triển website động vì nó tốt, nhanh và dễ dàng
nghiên cứu hơn các giải pháp khác. PHP có khả năng thực hiện và tích hợp chặt
chẽ với hầu hết các cơ sở dữ liệu có sẵn, tính năng bền vững linh động và khả năng
phát triển không giới hạn. Tất cả các đặc tính trên đều miễn phí vì PHP là mã
nguồn mở. PHP vừa dễ với người mới sử dụng và vừa có khả năng làm được mọi
thứ, đáp ứng yêu cầu của lập trình viên chuyên nghiệp.
PHP được sử dụng càng ngày càng nhiều và mới đây đã bắt kịp ASP (vốn
được xem là ngôn ngữ kịch bản phổ biến nhất hiện nay). PHP là modun thông
dụng cho Apache (máy chủ Web phổ biến nhất) và nó đã có mặt trên 12 triệu
website.
Chế độ mở file:
Mode

Diễn Giải

R

Mở dưới dạng Read-Only

r+

Mở dưới dạng Read-Write


W

Mở dưới dạng Write-Only
7


w+

Mở dưới dạng Write-Read. Nếu file này tồn tại, nội dung sẽ bị
xóa, nếu không tồn tại chúng sẽ được tạo ra

A

Mở dưới dạng append dữ liệu (write), nếu nội dung tồn tại, bắt
đầu cuối cùng của nội dung, dữ liệu sẽ được ghi tiếp phần
cuối, trong trường hợp file không tồn tại chúng sẽ được tạo ra.

a+

Mở dưới dạng append dữ liệu (write & read), nếu nội dung tồn
tại, bắt đầu phần đầu của nội dung, dữ liệu sẽ được ghi tiếp phần
đầu, trong trường hợp file không tồn tại chúng sẽ được tạo ra.

Thiết lập kết nối cơ sở dữ liệu:
Để kết nối cơ sở dữ liệu MySQL, cần cung cấp tên Server hay IP (có thể là
localhost) của máy chứa cơ sở dữ liệu MySQL, Username và Password để đăng
nhập làm việc trên cơ sở dữ liệu được mở.
Thiết lập kết nối:
Int mysql_pcconnect(“serverbname”, “username”, “password”);
if(!$db)

{
echo “Không kết nối được với CSDL”);
}
hoặc
$link = mysql_connect(“servername”, “username”, “password”)
or die(“Không kết nối được với CSDL”);
Mở một CSDL: mysql_select_db(“database name”); hoặc mysql_select_db
(“database name”, $link);
Đóng kết nối cơ sở dữ liệu: mysql_close(database_connection);
Truy vấn cơ sở dữ liệu:
Int mysql_query(string sql);
Int mysql_query(string sql, [int db_connect]);
8


Int mysql_query(string database, string sql, [int db_connect]);
Số lượng mẩu tin: mysql_num_rows(); Cho biết số lượng mẩu tin
câu truy vấn trả về;
Truy vấn dữ liệu: Int mysql_fetch_array($result);
Mysql_fetch_object($result);
Dung lượng của tập mẩu tin: int mysql_free_result(int $result);
1.2. Giới thiệu MySQL.
MySQL là ứng dụng cơ sở dữ liệu mã nguồn mở phổ biến nhất hiện nay và
được sử dụng phối hợp với PHP.Trước khi làm việc với MySQL cần xác định các
nhu cầu cho ứng dụng.
MySQL là cơ sở dữ liệu có trình giao diện trên Windows hay Linux,cho
phép người sử dụng có thể thao tác các hành động liên quan đến nó.Việc tìm hiểu
từng công nghệ trước khi bắt tay vào việc viết mã kịch bản PHP,việc tích hợp hai
công nghệ PHP và MySQL là một công việc cần thiết và quan trọng.
Chúng ta có thế download MySQL tại website www.mysql.com.

1.3. Mô hình MVC
Mô hình MVC (Model - View - Controller) là một kiến trúc phần mềm hay
mô hình thiết kế được sử dụng trong kỹ thuật phần mềm. Nó giúp cho các
developer tách ứng dụng của họ ra 3 thành phần khác nhau Model, View và
Controller. Mỗi thành phần có một nhiệm vụ riêng biệt và độc lập với các thành
phần khác.
Các thành phần trong MVC

9


Hình 1.1.Mô hình MVC
Model
Đây là thành phần chứa tất cả các nghiệp vụ logic, phương thức xử lý, truy
xuất database, đối tượng mô tả dữ liệu như các Class, hàm xử lý …
View
Đảm nhận việc hiển thị thông tin tương tác với người dùng nơi chứa tất cả
các đối tượng GUI như textbox, images,… Hiểu một cách đơn giản, nó là tập hợp
các form hoặc các file HTML.
Controller
Giữ nhiệm vụ nhận điều hướng các yêu cầu từ người dùng và gọi đúng
những phương thức xử lý chúng… Chẳng hạn, thành phần này sẽ request từ url và
form để thao tác trực tiếp với Model.
Nhìn lại sơ đồ phía trên, ta thấy, các Web Browser gửi một yêu cầu thông
qua môi trường internet đến mô hình MVC và nơi nhận yêu cầu chính là file
Controller-trung tâm xử lý. File Controller sẽ xử lý thao tác xem rằng có cần phải
sử dụng Model hay không?
Trường hợp 1- luồng dữ liệu theo dòng 1: Controller sẽ xử lý thao tác mà
10



web browser yêu cầu và yêu cầu Model trả về những phương thức xử lý và sau khi
có kết quả nó sẽ trả về View thông qua đường hướng dữ liệu 1. View sẽ thực hiện
trả về những kết qủa của Model và Controller sau khi điều hướng về cho người
xem ở web browser. Khi đó, người dùng sẽ thấy được kết quả mà họ đã đưa lên.
Trường hợp 2-luồng dữ liệu theo dòng 2: khi dữ liệu không cần thiết phải
xử lý qua Model thì Controller sẽ xử lý dữ liệu và trả về View. Khi đó mô hình sẽ
có dạng VC – là một dạng web tĩnh. View sẽ thực hiện trả về những kết qủa của
Model và Controller sau khi điều hướng về cho người xem ở web browser. Khi đó,
người dùng sẽ thấy được kết quả mà họ đã đưa lên.
Đây là một cách đơn giản để mô tả lại luồng sự kiện được xử lý trong MVC:
 User tương tác với View, bằng cách click vào button, user gửi yêu cầu đi.
 Controller nhận và điều hướng chúng đến đúng phương thức xử lý ở
Model.
 Model nhận thông tin và thực thi các yêu cầu trả lại kết quả.
 Controller sẽ điều khiển view hiển thị kết quả tương ứng cho người sử dụng.

11


Hình 1.2. Biểu đồ trình tự mô hình MVC

Ưu và nhược điểm của mô hình MVC
Ưu điểm: Thể hiện tính chuyên nghiệp trong lập trình, phân tích thiết kế.
Do được chia thành các phần độc lập nên giúp phát triển ứng dụng nhanh hơn, đơn
giản, dễ nâng cấp, bảo trì…
Nhược điểm: Đối với dự án nhỏ việc áp dụng mô hình MVC gây cồng
kềnh, tốn thời gian trong quá trình phát triển. Tốn thời gian trung chuyển dữ liệu
của các thành phần.
1.4. Giới thiệu về Codeigniter Framework 2.x

1.4.1. Tổng quan
12


CodeIgniter là một nền tảng ứng dụng web (web application framework)
nguồn mở được dùng để xây dựng các ứng dụng web động tương tác với PHP. Nó
cho phép các nhà phát triển xây dựng một ứng dụng web nhanh hơn - so với việc
viết mã hỗn tạp - bằng cách cung cấp 1 bộ thư viện đầy đủ cho các tác vụ thông
thường, cũng như cung cấp một mô hình tương tác đơn giản và dễ hiểu cho việc
kết nối tới những bộ thư viện đó. Phiên bản chính thức đầu tiên của CodeIgniter
được công bố vào 28 tháng 2 năm 2006.Phiên bản mới nhất cho tới bây giờ là 2.2.2
được công bố chính thức vào tháng 04 năm 2015.
CodeIgniter khuyến khích các lập trình viên sử dụng mô hình model-viewcontroller architectural pattern cho các ứng dụng web của mình.
CodeIgniter cũng mang một số các khái niệm đặc thù và các tính năng cơ
bản của các mô hình MVC khác như Ruby on Rails:
 Hỗ trợ kết nối và tương tác đa nền tảng cơ sở dữ liệu
 Tương tác với cơ sở dữ liệu thông qua active records
 Session Management (quản lí Session)
 Định dạng và chuẩn hóa form và dữ liệu đầu vào
 Hỗ trợ Caching toàn trang để tăng tốc độ thực thi và giảm tải tối thiểu
cho máy chủ.
 Scaffolding (Bị phản đối từ cộng đồng nên đã được lược bỏ trong phiên
bản 2.0 trở về sau)
 Hỗ trợ Template Engine hoặc sử dụng chính PHP tags để điều hướng
trong Views
 Hỗ trợ Hooks, các lớp ngoại (Class Extensions), và các Plugins
Ưu điểm: Trong số các mô hình framework MVC khác, CodeIgniter có các
ưu điểm sau:
 Tương thích hoàn toàn với PHP 4. Nếu sử dụng PHP 5 sẽ dùng được các
tính năng hữu ích khác như khả năng gọi phương thức dây chuyền (method

13


chaining ability).
 Mô hình code nhẹ cho hệ thống, cải thiện tốc độ thực thi.
 Đơn giản trong việc cài đặt, cấu hình và cấu trúc thư mục.
 Error Logging
 Mềm dẻo trong việc định tuyến URI (URI Routing)
Framework này tích hợp thêm vào một số lớp thư viện khác mà các
framework khác chưa mặc định tích hợp:
 Bảo mật và XSS Filtering
 Gửi Email, hỗ trợ đính kèm, HTML/Text email, đa giao thức(sendmail,
SMTP, and Mail) và các thứ khác.
 Thư viện chỉnh sửa ảnh (cắt ảnh, thay đổi kích thước, xoay ảnh, v.v..).
Hỗ trợ GD, ImageMagick, và NetPBM
 Upload file
 FTP Class - Tương tác với máy chủ thông qua giao thức FTP
 Localization
 Phân trang tự động
 Mã hóa dữ liệu - Data Encryption
 Đo lường tốc độ thực thi - Benchmarking
 Application Profiling
 Lịch - Calendaring Class
 User Agent Class
 Nén - Zip Encoding Class
 Trackback Class
 XML-RPC Library
 Unit Testing Class
 Search-engine Friendly URLs
14



 Một lượng lớn các hàm hỗ trợ (helpers)
Nhược điểm:
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ác giữ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ác thao 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ác thư viện bên ngoài, như jQuery,
Script.aculo.us, Prototype hay Mootools…
Chưa hỗ trợ một số module thông dụng: So sánh với 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.
1.4.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.

15


Để cài đặt và sử dụng được CodeIgniter Framewrk, trước hết ta cần phải cài
đặt một phần mềm hỗ trợ server giả lập. Hiện nay, có ba phần mềm khá phổ biến
giúp chúng ta thực hiện được việc tạo server giả lập trên localhost một cách dễ
dàng và nhanh chóng là: Appserver, Xamppserver và Wampserver. Các phần mềm
này bao gồm server Apache, trình biên dịch PHP và trình quản lý phpMyAdmin là
các thành phần để chạy được ứng dụng PHP.
Trong bài báo cáo đề tài này, em xin hướng dẫn cài đặt Xampp. Để cài đặt
Xampp, ta tiến hành theo các bước sau:
Bước 1: Download gói cài đặt Xampp tại
/>Sau khi tải về, kích hoạt tệp xampp-win32-5.6.3-0-VC11-installer và tiến
hành cài đặt.
Đây là gói Xampp đã được cấu hình hoàn chỉnh, khi muốn chạy Xampp chỉ
cần chọn Start.

16


Hình 1.3. Cấu hình xampp_start
Và muốn ngừng chạy ta chọn Stop.

17


Hình 1.4. Cấu hình xampp_stop
Và muốn điều khiển Xampp thì chọn xampp_control.
Bước 2: Để cài đặt và chạy ứng dụng đầu tiên trong codeigniter. Bạn cần
download bộ framework này tại đây: />Sau khi download xong. Chúng ta giải nén sẽ thấy bố cục của chúng như

hình bên dưới.

18


Hình 1.5. Thư mục của CodeIgniter Framework 2.2.1
Như các bạn thấy, chúng ta có tới 3 thư mục là: application, system,
user_guide và file index.php. Trong đó, chúng ta chỉ quan tâm tới 2 thư mục là
application, system và file index.php.
Copy chúng vào thư mục D/xampp/htdocs. Trong trường hợp này, tạo thư
mục tên baocao để chứa chúng.
Sau khi đã hoàn tất thao tác, kế tới ta tìm hiểu xem, chức năng của 2 thư
mục này như thế nào.
+ Thư mục system là thư mục dùng để chứa thư viện mặc định ban đầu của
framework.
+ Thư mục application là thư mục dùng để chứa code do chúng ta tạo ra.
Vì thế, sau này chúng ta chủ yếu sẽ thao tác ở thư mục application.

19


Hình 1.6. Thư mục application
Như các bạn đã thấy ở hình trên. Thư mục application của chúng ta chứa
khá nhiều thư mục khác nhau. Mỗi thư mục có những nhiệm vụ khác nhau.
 Thư mục config: Dùng để chứa các file cấu hình như kết nối CSDL, cấu
hình đường dẫn, cấu hình ngôn ngữ,….
 Thư mục Controllers: Chứa các file controller của ứng dụng.
 Thư mục Models: Chứa các file thao tác trên CSDL của ứng dụng.
 Thư mục Views: Chứa các file hiển thị thông tin khi tương tác.
1.4.3. Cấu trúc CodeIgniter

Dòng chảy dữ liệu trong CodeIgniter

Hình 1.7. Sơ đồ thể hiện dòng chảy dữ liệu trong CodeIgniter
1. Tập tin index.php đóng vai trò làm controller đầu vào, thiết lập các tài
nguyên cần thiết cho hệ thống.
2. Routing: Quá trình điều hướng giúp xác định các yêu cầu và hướng xử lý
đối với chúng.
3. Caching: Nếu dữ liệu được yêu cầu đã được lưu trong bộ đệm,
CodeIgniter sẽ trả dữ liệu trong bộ đệm về phía client. Quá trình xử lý kết thúc.
4. Security: Dữ liệu trước khi được chuyển đến các Controller sẽ được lọc

20


để phòng chống XXS hoặc SQL Injection.
5. Application Controller: Controller xử lý dữ liệu nhận được bằng cách
gọi đến các Models, Libraries, Helpers, Plugins…có liên quan.
6. View: Dữ liệu được chuyển qua View để hiển thị cho người dùng. Nếu
chức năng caching được bật, dữ liệu sẽ được lưu trong cache cho những lần yêu
cầu tiếp theo.
Trong thực tế, đôi khi ta cần xen vào các bước trong sơ đồ trên. Chẳng hạn,
trước khi một controller được gọi, ta có thể muốn lưu log xuống tập tin trong hệ
thống. CodeIgniter sử dụng cơ chế hook cho phép ta thực hiện việc này. Để kích
hoạt hook, ta cần thay đổi giá trị của biến $config['enable_hooks'] trong tập tin
application/config/config.php: $config['enable_hooks'] = TRUE;
Các hook được khai báo trong tập tin application/config/hooks.php, có mẫu
sau:
$hook['pre_controller'] = array(
'class' => 'MyClass',
'function' => 'Myfunction',

'filename' => 'Myclass.php',
'filepath' => 'hooks',
'params' => array('beer', 'wine', 'snacks')
);
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ó ý 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.
21


 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/appple-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 (wildcard) để 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.
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)
22


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
Model
Một lớp model chuẩn trong CodeIgniter có cấu trúc như sau:
class Example_model extends Model {
/** * Hàm tạo */
function __contruct()
{
parrent::__contruct();
}
/** * Mô tả hàm * @param kiểu dữ liệu $param mô tả biến */
function exampleFunction($param)
{
// Do something here
}

}
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:
23


$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_mode.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();
Để gán một tên khác cho lớp model khi sử dụng trong chương trình, ta có
thể truyền vào tham số thứ hai như sau: $this->load->model('model_name',
'ModelName');
Khi đó, để sử dụng các phương thức của lớp model, ta gọi: $this ->
ModelName ->method();
View
Để sử dụng view trong controller, ta sử dụng đoạn mã sau:
$this->load->view('view_name', $data);
Trong đó, view_name là tên của view, $data chứa các dữ liệu sẽ được hiển
thị trong view. Cũng giống như model, ta có thể lưu view trong các thư mục để
tiện cho việc quản lý.
Khi sử dụng, chỉ cần khai báo đường dẫn tương đối đến thư mục chứa view.
Ví dụ tập tin header.tpl.php được lưu trong thư mục application/views/front_end.
Để hiển thị view này, ta sử dụng đoạn mã sau: $this->load->view
('front_end/header.tpl');
CodeIgniter cho phép sử dụng nhiều view trong cùng một phương thức của
controller. Dữ liệu trong các view sẽ được kết hợp lại với nhau. Ví dụ:

class Example extends Controller {
function showExample()
{
// Loading multiple views
24


$this->load->view('header.tpl');
$this->load->view('content.tpl');
$this->load->view('sidebar.tpl');
$this->load->view('footer.tpl');
}
}
Để hiển thị dữ liệu trong model ra view, ta có thể truyền một mảng hoặc đối
tượng làm đối số thứ hai khi load view. Ta cũng có thể sử dụng các cấu trúc điều
khiển (if, else, switch…case…), lặp (for, while, do…while…)…bên trong view để
hiển thị dữ liệu.
CodeIgniter còn cho phép lập trình viên có thể lấy về nội dung của view
thay vì xuất trực tiếp trình duyệt, bằng cách truyền true làm đối số thứ ba khi tải
view.
Controller
Một lớp controller chuẩn trong CodeIgniter có mẫu:
class Example extends Controller {
/** * Hàm tạo */
function __contruct()
{
parrent::__contruct();
}
/** * Mô tả hàm * @param kiểu dữ liệu $param mô tả biến */
function method($param)

{
// Do something here
}…
}
Khi khai báo một lớp controller, ta cần tuân theo một số quy tắc:
25


×