Tài liệu Báo cáo khóa luận tốt nghiệp công nghệ phần mềm. đề tài "tìm hiểu codeigniter và xây dựng website thương mại"

  • Số trang: 86 |
  • Loại file: PDF |
  • Lượt xem: 3091 |
  • Lượt tải: 7
HungQuyen

Tham gia: 08/07/2014

Mô tả:

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 -