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 (4.06 MB, 95 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
ỦY BAN NHÂN DÂN TỈNH QUẢNG NAM
<b>TRƯỜNG ĐẠI HỌC QUẢNG NAM KHOA: CÔNG NGHỆ THÔNG TIN </b>
------
<i>Quảng Nam, tháng 05 năm 2019 </i>
</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">ỦY BAN NHÂN DÂN TỈNH QUẢNG NAM
<b>TRƯỜNG ĐẠI HỌC QUẢNG NAM KHOA: CÔNG NGHỆ THÔNG TIN </b>
</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3"><i>Lời đầu tiên, em xin gởi lời cảm ơn chân thành đến quý thầy cô đã giúp đỡ </i>
<i><b>chúng em thực hiện đề tài này. Đặc biệt là ThS. Dương Phương Hùng đã tận tình </b></i>
<i>giúp đỡ và hướng dẫn em trong suốt quá trình thực hiện đề tài tốt nghiệp này. Đồng thời, em cũng xin cảm ơn quý thầy cô thuộc ngành Công Nghệ Thông Tin trường Đại Học Quảng Nam đã truyền đạt những kiến thức cần thiết và những kinh nghiệm quý báu cho em trong suốt thời gian 4 năm trên giảng đường để em có </i>
<i><b>thể thực hiện tốt đề tài này. Đặc biệt, em xin gởi lời cảm ơn chân thành tới ThS.Hồ Hữu Linh - giáo viên chủ nhiệm lớp DT15CTT03 cùng ThS. Dương Phương Hùng </b></i>
<i>thầy trưởng khoa đã giúp đỡ em rất nhiều trong q trình học tập và cơng việc. Cuối cùng, em xin chân thành cảm ơn những người bạn, và các anh chị tại công ty HT ACTIVE đã ln đồng hành, chỉ bảo nhiệt tình trong q trình thực tập tại cơng ty để em có thể hoàn thành đề tài một cách tốt nhất. </i>
<i>Trong quá trình thực hiện đề tài, do kiến thức và thời gian cịn hạn chế nên khơng thể tránh khỏi những sai sót. Vì vậy em mong q thầy cơ thơng cảm và góp ý để em có thể hồn thiện đề tài. Và những lời góp ý đó có thể giúp em có thể tránh được những sai lầm sau này. </i>
<i>Em xin chân thành cảm ơn! </i>
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">Bảng 1.1: Sự khác biệt giữa Abstract class và Interface ... 22
Bảng 2.1: Chức năng đăng nhập. ... 28
Bảng2.2: Chức năng tìm kiếm hàng hóa. ... 29
Bảng 2.3: Chức năng xem hàng hóa. ... 29
Bảng 2.4: Chức năng bình luận. ... 30
Bảng 2.5: Chức năng đặt hàng. ... 31
Bảng 2.6: Chức năng liên hệ - gửi mail. ... 31
Bảng 2.7: Chức năng đăng xuất. ... 31
Bảng 2.8: Chức năng đăng nhập. ... 32
Bảng 2.9: Chức năng quản lý sản phẩm. ... 33
Bảng 2.10: Chức năng quản lý nhà sản xuất. ... 33
Bảng 2.11: Chức năng quản lý người dùng. ... 34
<i>Bảng 2.12: Chức năng quản lý hóa đơn. ... 34 </i>
Bảng 2.13: Chức năng quản lý bình luận. ... 35
Bảng 2.14: Chức năng quản lý bình luận. ... 35
Bảng 2.15: Chức năng tìm kiếm thơng tin. ... 36
Bảng 2.16: Chức năng đăng xuất. ... 36
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">Hình 1.1: Phương thức hoạt động của PHP. ... 10
Hình 1.2: Mơ hình MVC. ... 17
Hình 1.3: Mơ hình hoạt động chính. ... 19
Hình1.4: Mơ hình triển khai trong laravel. ... 26
Hình 2.1: Quan hệ giữa Actor admin với UC. ... 39
Hình 2.2: Quan hệ giữa Actor nhân viên bán hàng với các UC... 39
Hình 2.3: Quan hệ giữa Actor nhân viên viết bài với các UC. ... 39
Hình 2.4: Quan hệ giữa Actor Khách hàng với các UC. ... 40
Hình 2.5: Xác định mối quan hệ giữa UC và UC. ... 40
Hình 2.6: Sơ đồ User case tổng quát. ... 40
Hình 2.7: Biểu đồ tuần tự UC đăng nhâ ̣p. ... 46
Hình 2.8: Biểu đồ tuần tự UC quản lý bán hàng. ... 47
Hình 2.9: Biểu đồ tuần tự quản lý bán hàng. ... 48
Hình 2.10: Biểu đờ t̀n tự UC thanh tốn... 49
Hình 2.11: Biểu đồ tuần tự UC - Thống kê. ... 49
Hình 2.12: Biểu đồ tuần tự quản lý người dùng. ... 50
Hình 2.13: Biểu đồ tuần tự quản lý tin tức. ... 50
Hình 2.14: Biểu đồ tuần tự quản lý đăng xuất. ... 51
Hình 2.15: Biểu đồ cộng tác UC đăng nhập. ... 51
Hình 2.16: Biểu đồ cộng tác quản lý bán hàng. ... 52
Hình 2.17: Biểu đồ cộng tác quản lý hàng hóa. ... 52
Hình 2.18: Biểu đồ cộng tác quản lý thanh tốn. ... 53
Hình 2.19: Biểu đồ cộng tác thống kê. ... 53
Hình 2.20: Biểu đồ cộng tác quản lý người dùng. ... 54
Hình 2.21: Biểu đồ cộng tác quản lý tin tức. ... 54
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">Hình 2.22: Biểu đồ lớp. ... 55
Hình 2.23. Biểu đồ trạng thái cho chức năng đăng nhập. ... 56
Hình 2.24: Biểu đồ trạng thái cho chức năng quản lý sản phẩm. ... 56
Hình 2.25: Biểu đồ trạng thái cho lớp sản phẩm chức năng xem chi tiết sản phẩm. ... 56
Hình 2.26. Biểu đồ trạng thái cho lớp hóa đơn chức năng đặt hàng. ... 57
Hình 2.26: Biểu đồ trạng thái cho lớp hóa đơn chức năng quản lý hóa đơn ... 57
Hình 2.27. Biểu đồ trạng thái cho chức năng thống kê. ... 57
Hình 3.1. Giao diện đăng nhập hệ thống quản lý website. ... 64
Hình 3.2. Giao diện trang chủ hệ thống. ... 64
Hình 3.3. Giao diện hiển thị danh sách người dùng. ... 65
Hình 3.4. Giao diện tạo người dùng. ... 66
Hình 3.5. Giao diện xem thông tin người dùng. ... 66
Hình 3.6. Giao diện chỉnh sửa người dùng. ... 67
Hình 3.7. Giao diện tạo sản phẩm. ... 67
Hình 3.8. Giao diện xem chi tiết sản phẩm. ... 68
Hình 3.9. Giao diện danh sách đơn hàng. ... 68
Hình 3.10. Giao diện chi tiết đơn hàng. ... 69
Hình 3.11. Xuất hóa đơn sang PDF. ... 69
Hình 3.12. Giao diện trang đăng nhập. ... 70
Hình 3.13. Giao diện đăng ký tài khoản. ... 71
Hình 3.14. Giao diện trang chủ website bán hàng. ... 72
Hình 3.15. Giao diện trang sản phẩm cùng loại. ... 73
Hình 3.16. Giao diện trang chi tiết sản phẩm. ... 74
Hình 3.17. Giao diện trang tin tức. ... 75
Hình 3.18. Giao diện trang liên hệ. ... 76
Hình 3.19. Xác nhận liên hệ của người dùng bằng email. ... 77
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">Hình 3.20. Giao diện đặt hàng. ... 77 Hình 3.21. Giao diện thanh tốn hóa đơn. ... 78
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9"><b>Chữ cái viết tắt / Ký hiệu Cụm từ đầy đủ </b>
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10"><b>Phần 1. MỞ ĐẦU ... 1 </b>
1.1. Lý do chọn đề tài ... 1
1.2. Mục tiêu của đề tài ... 2
1.3. Đối tượng và phạm vi nghiên cứu ... 2
<b>Phần 2. NỘI DUNG NGHIÊN CỨU ... 4 </b>
<b>Chương 1: CƠ SỞ LÝ THUYẾT ... 4 </b>
<b>1.1.Tổng quan về thương mại điện tử ... 4 </b>
1.1.1. Khái niệm thương mại điện tử ... 4
1.1.2. Lợi ích của việc sử dụng thương mại điện tử ... 4
1.1.3. Những thách thức và khó khăn của thương mại điện tử ... 5
1.1.4. Cơ sở để phát triển và các loại giao dịch thương mại điện tử ... 6
<b>1.2.Tổng quan về ngơn ngữ lập trình PHP ... 6 </b>
1.2.1. Lịch sử phát triển của PHP ... 6
1.2.3. Ưu và nhược điểm của PHP ... 8
1.2.4. Tại sao nên dùng PHP ... 9
1.2.5. Phương thức hoạt động của PHP ... 10
1.2.6. Các loại kiểu dữ liệu ... 10
1.2.7. Biến - Hằng trong PHP ... 11
1.2.8. Biểu thức điều kiện trong PH ... 11
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">1.2.9. Hàm trong PHP ... 12
1.2.10. Session và Cookie trong PHP ... 12
<b>1.3.Tổng quan về hệ quản trị cơ sở dữ liệu MySQL ... 13 </b>
1.3.1. Lịch sử phát triển của MySQL ... 13
1.3.2. Khái niệm ... 13
1.3.3. Ưu điểm của MySQL ... 14
1.3.4. Tại sao phải sử dụng hệ quản trị cơ sở dữ liệu MySQL ... 15
<b>1.4.Tổng quan về mơ hình MVC Pattern ... 16 </b>
1.4.1. Lịch sử ra đời của mơ hình MVC ... 16
1.4.2. Khái niệm ... 16
1.4.3. Đặc điểm của mơ hình MVC ... 16
1.4.4. Kiến trúc mơ hình MVC ... 17
1.4.5. Quy trình hoạt động của mơ hình MVC ... 17
1.4.6. Ưu điểm và nhược điểm của mô hình MVC ... 18
1.4.7. Ứng dụng thực tế mơ hình MVC ... 18
1.4.8. Các thành phần kiến trúc khác theo mơ hình MVC ... 18
<b>1.5.Tổng quan về lập trình hướng đối tượng OOP ... 19 </b>
1.5.1. Lập trình hướng đối tượng OOP là gì? ... 19
1.5.2. Ưu điểm của lập trình hướng đối tượng OOP ... 20
1.5.3. Một số khái niệm cơ bản trong lập trình hướng đối tượng ... 20
1.5.4. Các tính chất của lập trình hướng đối tượng ... 20
1.5.5. Các mức độ truy cập của một phương thức ... 21
1.5.6. Sự khác biệt giữa Abstract class và Interface ... 21
<b>1.6.Tổng quan về PHP framework Laravel ... 22 </b>
1.6.1. Lịch sử phát triển của laravel ... 22
1.6.2. Khái niệm ... 23
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">1.6.3. Các tính năng chính của Laravel Framework ... 24
1.6.4. Tại sao nên dùng Framework Laravel ... 25
1.6.5. Những ưu điểm của Laravel Framework ... 25
<b>Chương 2: KHẢO SÁT VÀ PHÂN TÍCH HỆ THỐNG ỨNG DỤNG ... 28 </b>
<b>2.1. Khảo sát bài toán ... 28 </b>
2.2.1. Xác định các Actor và vai trò của Actor ... 37
2.2.2. Sơ đồ Use Case ... 38
2.2.3. Xác định Object ... 45
2.2.4. Biểu đồ tương tác ... 46
2.2.5. Biểu đồ lớp ... 55
2.2.6. Biểu đồ trạng thái ... 56
<b>2.3. Thiết kế cơ sở dữ liệu ... 58 </b>
<b>Chương 3: CÀI ĐẶT WEBSITE ... 64 </b>
<b>3.1. Một số giao diện quản lý của website ... 64 </b>
3.1.1. Giao diện đăng nhập vào hệ thống quản lý website ... 64
3.1.2. Giao diện trang chủ ... 64
3.1.3. Giao diện quản lý người dùng ... 65
3.1.4. Giao diện quản lý sản phẩm ... 67
3.1.5. Giao diện quản lý đơn hàng ... 68
<b>3.2. Một số giao diện bán hàng của website ... 70 </b>
3.2.1. Giao diện đăng nhập ... 70
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">3.2.2. Giao diện trang đăng ký tài khoản ... 71
3.2.3. Giao diện trang chủ mua hàng ... 72
3.2.4. Giao diện trang sản phẩm cùng loại ... 73
3.2.5. Giao diện trang chi tiết sản phẩm ... 74
3.2.6. Giao diện trang tin tức ... 75
3.2.7. Giao diện trang liên hệ ... 76
3.2.8. Giao diện trang gửi mail đến người dùng ... 77
3.2.9. Giao diện trang giỏ hàng ... 77
3.2.10. Giao diện thanh tốn hóa đơn ... 78
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">Hiện nay, công nghệ ngày càng phát triển mạnh mẽ và được ứng dụng ngày càng nhiều vào các lĩnh vực kinh tế, sản xuất cũng như đời sống thường nhật của con người. Một điểm tiêu biểu trong việc phát triển các cơng nghệ đó phải kể đến việc ứng dụng công nghệ thông tin vào khắp các lĩnh vực. Công nghệ thơng tin đã góp phần to lớn cho sự phát triển của xã hội loài người. Thương mại điện tử đã thay đổi cách thức giao dịch, mua bán truyền thống và ngày càng được mọi người ưu thích sử dụng. Do đó, việc “quản lý mua bán hàng trực tuyến qua mạng ” là không thể thiếu được trong mọi doanh nghiệp, cửa hàng vừa và nhỏ.
Năm 2008 là năm đầu tiên Việt Nam có sự phát triển lớn mạnh về lĩnh vực thương mại khi chính thức trở thành thành viên thứ 150 của tổ chức thương mại thế giới WTO. Với sự phát triển mạnh mẽ đó khơng thể phủ nhận sự đóng góp của thương mại điện tử, một lĩnh vực nóng bỏng hiện nay. Một đất nước đang phát triển mạnh mẽ, cuộc sống con người càng ngày nâng cao, mức tiêu thụ sản phẩm ngày càng tăng, nhu cầu con người ngày càng cao. Vì thế việc trao đổi mua bán cũng như quản lý hàng cần phải có sự thay đổi từ thủ cơng sang máy móc.
Xã hội ngày càng phát triển, mức sống của người dân được nâng cao thu nhập kinh tế ngày càng được cải thiện thì chiếc điện thoại di động khơng cịn trở nên xa lạ với mọi người nữa mà ngược lại nó là một vật dụng không thể thiếu đối với người dân hiện nay. Hầu hết mỗi người đều trang bị cho mình một chiếc điện thoại phù hợp với nhu cầu và túi tiền của mình. Tuy nhiên, với cuộc sống ngày càng bận rộn như hiện nay thì việc muốn mua một chiếc điện thoại mình ưa thích thì người tiêu dùng phải đến tận cửa hàng để chọn lựa vì thế sẽ mất khá nhiều thời gian và công sức.
Cùng với các lý do nêu trên, qua tìm hiểu em được biết việc ứng dụng bán điện thoại di động trực tuyến sẽ giúp cho khách hàng giảm bớt được thời gian và công sức phải đến tận cửa hàng để mua. Muốn lựa chọn cho mình một chiếc điện thoại ưng ý phù hợp với túi tiền thì khách hàng chỉ cần ngồi bên chiếc máy tính, điện thoại, ipad có nối mạng internet là có thế mua được mặt hàng điện thoại mình cần.
</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">Do đó em xin chọn thực hiện đề tài khóa luận tốt nghiệp của mình là: “ Ứng dụng PHP, MVC Pattern vào xây dựng website quản lý bán điện thoại di động trực tuyến.” cho một của hàng bán điện thoại di động. Việc xây dựng ứng dựng bán hàng trực tuyến sẽ giúp cho công việc kinh doanh trở nên thuận lợi và dễ dàng hơn, đáp ứng được nhu cầu làm việc mọi lúc, mọi nơi, đồng thời thỏa mãn nhu cầu xem thông tin, mua bán trực tuyến,…. Của mọi đối tượng khách hàng.
<b>1.2. Mục tiêu của đề tài </b>
<b>- Xây dựng website quản lý bán điện thoại di động trực tuyến với giao diện </b>
trực qua, hỗ trợ quản lý tương đối hoàn chỉnh, phục vụ một cách hiệu quả cho người dùng và quản lý của hàng trực tuyến.
- Tìm hiểu về thương mại điện tử.
- Tìm hiểu và sử dụng được PHP, MVC pattern, OOP và Laravel Framework. - Tìm hiểu và áp dụng được một số công nghệ khác để thiết kế giao diện
<b>website như: HTML5 & CSS3, Bootstrap 4.x – jquery 3.x, Ajax,…. </b>
- Website được xây dựng với định hướng giúp việc mua sắm điện thoại của khách hàng dễ dàng và nhanh gọn hơn, không mất thời gian và công sức.
<b>1.3. Đối tượng và phạm vi nghiên cứu </b>
1.3.1. Đối tượng
<b>- Các website quản lý cửa hàng điện thoại di động. </b>
- Tổng quan về thương mại điện tử.
- Ngồi ngơn ngữ phía backend như: PHP, Laravel Framework, mơ hình MVC, OPP thì áp dụng thêm một số cơng cụ phía frontend như: HTML5 & CSS3, Bootstrap 4.x, Jquery 3.x, Ajax,…
- Cách phân tích, thiết kế và xây dựng một website thương mại điện tử hoàn chỉnh.
1.3.2. Phạm vi nghiên cứu
Nghiên cứu những vấn đề quản trị ở những cửa hàng vừa và nhỏ, có thể định hướng ứng dụng cho các cửa hàng lớn.
<b>1.4. Phương pháp nghiên cứu </b>
Phương pháp nghiên cứu được sử dụng trong đề tài bao gồm:
</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">- Phương pháp phân tích lý thuyết là phương pháp phân tích, phát hiện và khai thác các khía cạnh khác nhau của lý thuyết để từ đó chọn lọc các thơng tin cần thiết để phục vụ cho đề tài nghiên cứu.
- Phương pháp quan sát là phương pháp tri giác có mục đích, có kế hoạch thu thập thơng tin quan sát được từ thực tế.
- Phương pháp chuyên gia là phương pháp xin ý kiến từ giảng viên hướng dẫn, giảng viên bộ môn xác định được hướng xây dựng đề tài, giải quyết các vấn đề khó khăn trong việc thực hiện nội dung khóa luận.
- Phương pháp tổng hợp: Áp dụng lựa chọn tốt nhất từ bước phân tích kết hợp với cơng nghệ, từ đó từng bước hoàn thành đề tài.
<b>1.5. Lịch sử nghiên cứu </b>
Đề tài không phải là những vấn đề mới trong khoa học nhưng thực sự là một nghiên cứu ứng dụng lý thuyết và thực tiễn với sinh viên năm cuối về công nghệ thông tin.
<b>1.6. Đóng góp của đề tài </b>
Qua đề tài nghiên cứu này, giúp chúng ta có cái nhìn rõ hơn về thương mại điện tử. Nhận thấy được thế mạnh và lợi ích mà thương mại điện tử mang lại.
Bên cạnh đó tiếp cận được những cải tiến trong ngơn ngữ lập trình và các cơng cụ mới.
Đồng thời, đề tài hồn thành sẽ đóng góp vào công tác quản lý, mua bán điện thoại một cách tiện lợi cho thị trường thương mại điện tử.
<b>1.7. Cấu trúc đề tài </b>
Nội dung đề tài gồm:
Chương I: Cơ sở lý thuyết.
Chương II: Khảo sát và phân tích hệ thống ứng dụng. Chương III: Thiết kế và cài đặt hệ thống.
Kết luận và kiến nghị. Tài liệu tham khảo. Phụ lục.
</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">1.1.1. Khái niệm thương mại điện tử
Hiện nay có nhiều khái nhiệm thương mại điện tử như Electronic Commerce hay e-Commerce trong đó có một khái niệm Thương mại điện tử khá nổi tiếng của các tổ chức quốc tế.Theo tổ chức thương mại thế giới WTO thì thương mại điện tử là việc sản xuất -> tiếp thị -> bán -> phân phối sản phẩm hành hóa và dịch vụ thông qua các phương tiện điện tử.
Theo tổ chức hợp tác và phát triển kinh tế OECD có 2 cách định nghĩa rộng và hẹp về giao dịch thương mại điện tử như sau:
a. Theo nghĩa rộng
Giao dịch thương mại điện tử là việc mua hoặc bán hàng / dịch vụ giữa danh nghiệp, người tiêu dùng, chính phủ và các tổ chức nhà nước hoặc tư nhân được tính hàng thơng qua các mạng kết nối qua trung gian máy tính.Hàng hóa hoặc dịch vụ được đặt mua qua mạng nhưng việc thanh tốn và giao hàng hóa có thể được thực hiện theo phương pháp truyền thống.
b. Theo nghĩa hẹp
Giao dịch thương mại điện tử là việc mua hoặc bán hàng hóa dịch vụ được tiến hành thơng qua internet, giao dịch TMĐT theo định nghĩa này bao gồm: các đơn hàng được nhận hoặc đặt qua bất kì ứng dụng nào trên nền internet trong các giao dịch tự động bất kì hình thức truy cập internet thông qua di động hay tivi loại trừ các đơn hàng qua điện thoại, fax hay email.
1.1.2. Lợi ích của việc sử dụng thương mại điện tử a. Đối với doanh nghiệp
Lợi ích lớn nhất mà thương mại điện tử đem lại là tiết kiệm chi phí và tạo thuận lợi cho các bên giao dịch. Với thương mại điện tử bạn không phải tốn kém nhiều cho việc thuê của hàng với đông đảo nhân viên phục vụ, bạn cũng không cần đầu tư nhiều cho kho chứa thay vào đó bạn chỉ cần một khoản tiền nhỏ để xây đựng một website bán hàng qua mạng sau đó chỉ tốn 10% phí để duy trị và vận hành website mỗi tháng.
</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">Doanh nghiệp có thể marketing tồn cầu với chi phí cực kì thấp, bạn có thể đưa thơng tin quảng cáo của bạn đến với hàng trăm triệu người xem từ khắp nơi trên thế giới.Đây là điều mà chỉ có thương mại điện tử làm được cho doanh nghiệp.
b. Đối với người tiêu dùng
Thương mại điện tử mở rộng khả năng lựa chọn hàng hóa, dịch vụ người cung cấp. Với thương mại điện tử khách hàng khơng cịn giới hạng về địa lý hay thời gian làm việc, họ có thể mua hàng mọi lúc, mọi nơi. Lựa chọn giữa hàng trăm thậm chí hàng nghìn nhà cung cấp giữa các vùng miền khác nhau.
c. Đối với xã hội
Thương mại điện tử tạo ra một phương thức kinh doanh và làm việc mới phù hợp với cuộc sống công nghiệp hiện đại. Thương mại điện tử tạo ra một sân chơi mới cho các danh nghiệp buộc họ phải đổi mới, sáng tạo để đưa ra chiến lược kinh doanh và dịch vụ riêng cho sản phẩm dịch vụ từ đó góp phần phát triển cho các doanh nghiệp nói riêng và nền kinh tế tổng thể nói chung. Mặc dù mang lợi những lợi ích kinh tế rất lớn nhưng việc ứng dụng thương mại điện tử cũng không tránh khỏi những thách thức khó khăn.
1.1.3. Những thách thức và khó khăn của thương mại điện tử a. Đối với cơ quan quản lý nhà nước
Thách thức về xây dựng và áp dụng chính sách. b. Đối với các cá nhân tổ chức
Bản chất của thương mại điện tử là giao dịch một cách gián tiếp, bên mua và bên bán thậm chí cịn khơng biết với nhau điều này dẫn đến những lo ngại riêng giữa người mua và người bán đó là thách thức về lịng tin. Người mua thì lo sợ số thẻ ngân hàng của họ khi truyền đi trên mạng có thể bị kẻ xấu hoặc bên bán lợi dụng và sử dụng bất hợp pháp. Còn người bán thì lo ngại về khả năng thanh tốn và q trình thanh tốn của bên mua.
c. Đối với các doanh nghiệp
Việc thay đổi cơ cấu, nhân sự và quy trình làm việc cũng như là một thách thức đối với nhà quản lý. Để triển khai thành công và hiệu quả thương mại điện tử thì doanh nghiệp phải có một cơ sở hạng tầng thương mại thơng tin vững chắc. Tiếp đó phải có đội ngũ IT đủ mạnh để có khả năng vận hành, quản trị và phát triển hệ thống này.
</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">1.1.4. Cơ sở để phát triển và các loại giao dịch thương mại điện tử a. Cơ sở để phát triển thương mại điện tử
Để phát triển thương mại điện tử cần phải có hội đủ một số cơ sở:
- Hạ tầng kỹ thuật internet phải đủ nhanh, mạnh đảm bảo truyền tải các nội dung thông tin bao gồm âm thanh, hình ảnh trung thực và sống động.
- Hạ tầng pháp lý: phải có luật về thương mại điện tử cơng nhận tính pháp lý của các chứng từ điện tử, các hợp đồng điện tử ký qua mạng,…
- Phải có cơ sở thanh tốn điện tử an tồn bảo mật.
- Phải có hệ thống cơ sở chuyển phát hàng nhanh chóng, kịp thời và tin cậy
- Phải có hệ thống an tồn bảo mật cho các giao dịch, chống xâm nhập trái phép, chống virus, chống thoái thác .
- Phải có nhân lực am hiểu kinh doanh, công nghệ thông tin, thương mại điện tử để triển khai tiếp thị, quảng cáo, xúc tiến, bán hàng và thanh tốn qua mạng
b. Các loại hình giao dịch thương mại điện tử
Business-to-business (B2B) : Mơ hình thương mại điện tử giữa các doanh nghiệp với doanh nghiệp.
Các loại giao dịch B2B cơ bản:
- Bên Bán - (một bên bán nhiều bên mua) là mơ hình dựa trên cơng nghệ web trong đó mơt cty bán cho nhiều cty mua.
- Bên mua - một bên mua - nhiều bên bán. - Sàn giao dịch - nhiều bên bán - nhiều bên mua.
- Thương mại điện tử phối hợp - các đôi tác phối hợp nhau ngay trong quá trình thiết kế chế tạo sản phẩm.
Business-t o-consumer (B2C): Mơ hình thương mại điện tử giữa doanh nghiệp và người tiêu dùng.
Hai loại giao dịch trên là giao dịch cơ bản của thương mại điện tử. Ngoài ra trong thương mại điện tử người ta còn sử dụng các loại giao dịch: Govement-to-Business (G2B), Government-to-citizens (G2C), ….
<b>1.2. Tổng quan về ngơn ngữ lập trình PHP </b>
1.2.1. Lịch sử phát triển của PHP
</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">a. PHP/FI
PHP (viết tắt hồi quy "PHP: Hypertext Preprocessor") được phát triển từ một sản phẩm có tên là PHP/FI. PHP/FI do Rasmus Lerdorf tạo ra năm 1995, ban đầu được xem như là một tập con đơn giản của các mã kịch bản Perl để theo dõi tình hình truy cập đến bản sơ yếu lý lịch của ông trên mạng. Ông đã đặt tên cho bộ mã kịch bản này là 'Personal Home Page Tools'
PHP/FI 2.0 được chính thức cơng bố vào tháng 11 năm 1997, sau một thời gian khá dài chỉ được công bố dưới dạng các bản beta. Nhưng khơng lâu sau đó, nó đã được thay thế bởi các bản alpha đầu tiên của PHP 3.0.
b. PHP 3
PHP 3.0 là phiên bản đầu tiên thấy một hình ảnh gần gũi với các phiên bản PHP mà được biết ngày nay. Nó đã được Andi Gutmans và Zeev Suraski tạo ra năm 1997 sau khi viết lại hoàn toàn bộ mã nguồn trước đó.
c. PHP 4
Một động cơ mới, có tên 'Zend Engine' (ghép từ các chữ đầu trong tên của Zeev và Andi), đã đáp ứng được các nhu cầu thiết kế này một cách thành công, và lần đầu tiên được giới thiệu vào giữa năm 1999. PHP 4.0, dựa trên động cơ này, và đi kèm với hàng loạt các tính năng mới bổ sung, đã chính thức được cơng bố vào tháng 5 năm 2000, gần 2 năm sau khi bản PHP 3.0 ra đời
Với PHP 4, số nhà phát triển dùng PHP đã lên đến hàng trăm nghìn và hàng triệu site đã công bố cài đặt PHP, chiếm khoảng 20% số tên miền trên mạng Internet.
d. PHP 5
Sự thành công hết sức to lớn của PHP 4.0 đã khơng làm cho nhóm phát triển PHP tự mãn. Cộng đồng php đã nhanh chóng giúp họ nhận ra những yếu kém của PHP 4 đặc biệt với khả năng hỗ trợ lập trình hướng đối tượng (OOP), xử lý XML, không hỗ trợ giao thức máy khách mới của MySQL 4.1 và 5.0, hỗ trợ dịch vụ web yếu. Những điểm này chính là mục đích để Zeev và Andi viết Zend Engine 2.0, lõi của PHP 5.0. Ngày 29 tháng 6 năm 2003, PHP 5 Beta 1 đã chính thức được cơng bố để cộng đồng kiểm nghiệm. PHP 5 bản chính thức đã ra mắt ngày 13 tháng 7 năm 2004 sau một chuỗi khá dài các bản kiểm tra thử bao gồm Beta 4, RC 1, RC2, RC3.
</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">e. PHP 6
Hiện nay phiên bản tiếp theo của PHP đang được phát triển, PHP 6 bản sử dụng thử. Phiên bản PHP 6 được kỳ vọng sẽ lấp đầy những khiếm khuyết của PHP ở phiên bản hiện tại.
f. PHP7
là một phiên bản của ngôn ngữ PHP được giới thiệu vào ngày 3 tháng 9 năm 2015, đây là phiên bản mới nhất và được trơng đợi nhất bởi có nhiều sự thay đổi về cú pháp, bổ sung các thư viện hiện đại giúp ngôn ngữ PHP trở nên đa dạng hơn.
1.2.2. Khái niệm về PHP
PHP là một ngơn ngữ lập trình kịch bản hay một loại mã lệnh chủ yếu được dùng để phát triển các ứng dụng viết cho máy chủ, mã nguồn mở, dùng cho mục đích tổng qt. Nó rất thích hợp với web và có thể dễ dàng nhúng vào trang HTML. Do được tối ưu hóa cho các ứng dụng web, tốc độ nhanh, nhỏ gọn, cú pháp giống C và Java, dễ học và thời gian xây dựng sản phẩm tương đối ngắn hơn so với các ngôn ngữ khác nên PHP đã nhanh chóng trở thành một ngơn ngữ lập trình web phổ biến nhất thế giới.
1.2.3. Ưu và nhược điểm của PHP a. Ưu điểm
Ưu điểm đầu tiên đó chính là việc PHP được sử dụng miễn phí, vì thế nó là yếu tố vô cùng tuyệt vời cho những ai muốn học về ngơn ngữ lập trình này.
Thứ hai, cấu trúc của PHP cực đơn giản, thế nên đối với các bạn lập trình viên khi tìm hiểu và theo họ nó sẽ khơng bị mất quá nhiều thời gian mới có thể học được.
Thứ ba, thư viện mà PHP tạo ra thì có sự phong phú, cũng như được cộng đồng hỗ trợ một cách mạnh mẽ.
Thứ tư, khi học về PHP thì các bạn sẽ có được cơ hội về việc làm là rất lớn, mức lương của nó cũng khá cao nếu như chúng tơi khơng muốn nói là khủng, chắc chắn là các bạn chưa khi nào nghĩ tới.
Thứ năm, PHP không chỉ dừng lại ở những tính năng hiện tại, trong tương lai thì nó cịn phát triển mạnh mẽ hơn nữa để khẳng định được vị trí của mình
</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">ln là cao ở trong bảng danh sách thực hiện điều tra, khảo sát mỗi năm về ngơn ngữ lập trình trong công nghệ thông tin.
b. Nhược điểm của PHP
Thứ nhất, PHP có hạn chế về cấu trúc của ngữ pháp, bởi nó khơng được thiết kế gọn gàng và có phần đẹp mắt như những ngơn ngữ trong lập trình khác.
Thứ hai, PHP chỉ có thể hoạt động và sử dụng trên các ứng dụng trong web.
1.2.4. Tại sao nên dùng PHP
a. PHP được các ông lớn tin dùng
PHP ra đời từ năm 1994, là ngơn ngữ lập trình Web phổ biến nhất hiện nay.
Bằng việc xây dựng trên nền ngôn ngữ C và là mã nguồn mở nên khả năng mở rộng cho ứng dụng PHP có thể nói là khơng có giới hạn.
b. Tính Cộng đồng của PHP
Là một ngôn ngữ mã nguồn mở cùng với sự phổ biến của PHP thì cộng đồng PHP được coi là khá lớn và có chất lượng.
c. Thư viện PHP phong phú
Nguyên nhân chủ yếu khiến PHP được đa số lập trình viên tin dùng và ngày càng phát triển mạnh mẽ đó là có các framework đa dạng, thư viện code phong phú giúp chúng ta dễ dàng lựa chọn một sản phẩm phù hợp để triển khai ứng dụng.
PHP có thể tương tác với hầu hết các loại ứng dụng phổ biến như xử lý hình ảnh, nén dữ liệu, mã hóa, thao tác file PDF, Office, Email, Streaming…
d. PHP có nhiều Framework hỗ trợ
Có khá nhiều các Framework hỗ trợ cho PHP khiến nó trở thành một trong những ngơn ngữ lập trình Web phát triển và phổ biến nhất thế giới. Việc sử dụng Framework giúp cho việc lập trình trở nên nhanh và hiệu quả hơn. Một số Framework phổ biến như: Laravel, CodeIgniter, Yii 2, Phalcon, CakePHP,...
e. Làm việc với nhiều hệ cơ sở dữ liệu
PHP thường đi kèm với MySQL như 1 cặp chiến hữu. PHP hỗ trợ MySQL và các hệ cơ sở dữ liệu khác như Oracle, SQL Server, DB2…
f. Tính bảo mật cao
</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">Các bản vá lỗi cho PHP cũng như các sản phẩm từ PHP cũng rất nhanh chóng do có nguồn cộng đồng hỗ trợ đông đảo, mạnh mẽ.
g. Thị trường & tương lai của PHP
Với việc ngày càng có nhiều ứng dụng lớn viết bằng PHP, sự đa dạng trong ứng dụng và Framework làm cho thị trường và tương lai dành cho các bạn yêu thích PHP là rất lớn. Rất nhiều công ty đang chọn PHP làm ngôn ngữ phát triển website cho khách hàng cũng như sản phẩm của riêng họ nên việc hiểu biết và chuyên sâu về công nghệ web nói chung và chuyên sâu về PHP nói riêng sẽ là một lợi thế rất lớn cho các bạn.
1.2.5. Phương thức hoạt động của PHP
PHP là ngơn ngữ lập trình kịch bản được chạy ở phía server nhằm tạo ra các mã HTML ở phía client (máy khách). Khi người dùng gọi đến trang PHP thì Web server sẽ triệu gọi PHP Engine để phiên dịch trang PHP và trả dữ liệu về trình duyệt của người dùng bằng định dạng HTML. Quá trình này diễn ra khi người dùng tương tác với trang web và trang web cũng thay đổi theo tương ứng tạo thành trang web động.
Hình 1.1: Phương thức hoạt động của PHP. 1.2.6. Các loại kiểu dữ liệu
a. Kiểu Int (kiểu số nguyên)
Kiểu INT(viết tắt của integer) là một kiểu dữ liệu dạng số nguyên và nó có thể hoạt động dưới nhiều kiểu cơ số khác nhau.
b. Kiểu Float (kiểu số thực)
- Kiểu số thực có thể hiểu nơm na là số có phần dư,.. như: 5.5 hoặc 8.9. - Trong PHP kiểu số thực tồn tại ở 2 dạng là float và double.
c. Kiểu Boolean
</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">Kiểu boolean trong PHP là một kiểu dữ liệu mà giá trị của nó chỉ tồn tại 2 giá trị TRUE, FALSE (có thể viết hoa, thường cũng được)
d. Kiểu String (kiểu chuổi)
Kiểu chuỗi trong PHP tồn tại ở hai dạng là String và Char. Để khai báo chuỗi thì giá trị của chuỗi phải được đặt trong cặp dấu ngoặc ' hoặc ".
e. Kiểu Array (kiểu mảng)
Kiểu mảng hay còn gọi là array trong PHP là một danh sách các phần tử có cùng, hoặc khơng cùng kiểu dữ liệu. Nó gồm có 2 loại mảng là mảng một chiều và mảng đa chiều và trong mỗi loại mảng đó nó lại phân ra thành mảng tuần tự và mảng bất tuần tự. Và để truy xuất phần tử trong mảng thì chúng ta cần phải dựa vào vị trí của nó.
f. Kiểu Null (kiểu rỗng)
Đây là một kiểu dữ liệu rỗng. Khi khai báo biến kiểu này bộ nhớ sẽ tiếp nhận tên biến mà không tốn thêm bất kỳ một ô nhớ nào.
g. Kiểu Object
Object là một kiểu dữ liệu lưu trữ dữ liệu và thông tin của đối tượng. 1.2.7. Biến - Hằng trong PHP
a. Biến
Biến là một giá trị có thể thay đổi khi chương trình thực thi. Khi biến được tạo sẽ xuất hiện một vùng nhớ để lưu trữ.
Biến trong PHP chỉ tồn tại trong thời gian server phát sinh trang web. Sau khi đã phát sinh xong trang web, tất cả các biến đều bị xóa đi.
b. Hằng
Khác với biến, hằng số là giá trị không thể thay đổi được. 1.2.8. Biểu thức điều kiện trong PH
a. Biểu thức điều kiện IF
Là biểu thức điều kiện trong PHP kiểm tra một hoặc tổ hợp biểu thức điều kiện nào đó. Nếu biểu thức trả về true thì thực thi các dịng lệnh. Nếu khơng thì khơng làm gì cả.
b. Biểu thức If…Else
</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">Là biểu thức kiểm tra một hoặc tổ hợp biểu thức điều kiện nào đó. Nếu trả về true thì sẽ thực thi khối lệnh bao trong if , cịn khơng thì thực thi khối lệnh được bao bởi else.
c. Biểu thức Elseif
Là biểu thức kiểm tra một hoặc một tổ hợp biểu thức điều kiện nào đó, nếu biểu thức trả về giá trị true thì khối lệnh bên trong sẽ được thực thi.
d. Biểu thức Switch…Case
Là cú pháp kiểm tra sự thỏa mãn của tất cả các trường hợp của biểu thức. Tương tự như elseif.
1.2.9. Hàm trong PHP
Hàm nghĩa là một tập hợp các đoạn mã và nó sẽ thực thi các đoạn mã đó khi gọi hàm ra, nó sẽ được thực thi lại nhiều lần hoặc thực thi trong một trường hợp nhất định. Có nghĩa là khi bạn tạo hàm thì các đoạn mã bên trong đó sẽ khơng thực thi cho đến khi được gọi ra bên ngoài.
1.2.10. Session và Cookie trong PHP a. Session
Session là phiên làm việc. Nó là cách đơn giản để lưu trữ 1 biến và khiến biến đó có thể tồn tại từ trang này sang trang khác.
Hoạt động của Session:
- Session khi sinh ra được lưu trên 1 file có tên dài dịng, khó đốn và được tạo ngẫu nhiên là session id trên máy chủ, và đồng thời ở máy client cũng có 1 cookie sinh ra có nội dung (hay giá trị) đúng như session id (để có thể so khớp session nào là của client nào).
- Đối với mỗi ngôn ngữ lập trình web sẽ có tên cookie quy định như php là PHPSESSID, jsp là JSESSIONID,… Các giá trị của biến session sẽ được lưu trong file đó (khác so với các biến thông thường là được lưu trong bộ nhớ server – trong php file nội dung được lưu trong thư mục thiết lập trong file php.ini (tham số session.save_path).
b. Cookie
Cookie là một phần dữ liệu được lưu trên máy khách. Mỗi khi máy khách gửi một yêu cầu tới máy chủ nào đó, thì nó sẽ gửi phần dữ liệu được lưu trong cookie tương ứng với máy chủ đó.
</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">Trong Cookie có một số thơng số sau:
- Địa chỉ URL mà trình duyệt sẽ gửi cookie tới - Thời gian hết hạn của cookie
- Các cặp biến: giá trị được lưu trữ liên tục Hoạt động của Cookie:
- Khác với dữ liệu gửi từ form (POST hay GET) thì cookies ẽ được trình duyệt tự động gửi đi theo mỗi lần truy cập lên máy chủ.
- Trong quá trình làm việc, cookie có thể bị thay đổi giá trị. Cookie sẽ bị vô hiệu hoá nếu cửa sổ trình duyệt điều khiển cookie đóng lại và cookie hết thời gian có hiệu lực. Theo mặc định, thời gian “sống” của cookies là tồn tại cho đến khi cửa sổ trình duyệt sử dụng cookies bị đóng. Tuy nhiên người ta có thể thiết lập tham số thời gian để cookie có thể sống lâu hơn (6 tháng chẳng hạn). Ví dụ như chế độ Remember ID & Password của 1 số trang web.
<b>1.3. Tổng quan về hệ quản trị cơ sở dữ liệu MySQL </b>
1.3.1. Lịch sử phát triển của MySQL
Ngày nay ứng dụng web có rất nhiều lựa chọn cơ sở dữ liệu (database), đối với các nên tảng mã nguồn mở nhất là PHP, MySQL là sự lựa chọn vô cùng phổ biến trong một thời gian dài.
Phiên bản đầu tiên của MySQL phát hành năm 1995
Công ty Sun Microsystems mua lại MySQL AB trong năm 2008
Năm 2010 tập đồn Oracle thâu tóm Sun Microsystems. Ngay lúc đó, đội ngũ phát triển của MySQL tách MySQL ra thành 1 nhánh riêng gọi là MariaDB. Oracle tiếp tục phát triển MySQL lên phiên bản 5.5.
2013 MySQL phát hành phiên bản 5.6 2015 MySQL phát hành phiên bản 5.7
MySQL đang được phát triển lên phiên bản 8.0. 1.3.2. Khái niệm
MySQL là hệ quản trị cơ sở dữ liệu tự do nguồn mở phổ biến nhất thế giới và được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng. Vì MySQL là cơ sở dữ liệu tốc độ cao, ổn định và dễ sử dụng, có tính khả chuyển, hoạt động trên nhiều hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh. Với tốc độ và tính bảo mật cao, MySQL rất thích hợp cho các ứng dụng có truy cập
</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">CSDL trên internet. MySQL miễn phí hồn tồn cho nên bạn có thể tải về MySQL từ trang chủ.
1.3.3. Ưu điểm của MySQL a. Linh hoạt
Sự linh hoạt về flatform là 1 đặc tính nổi bật của MySQL với các phiên bản đang được hỗ trợ của Linux, Unix, Windows, MySQL,…..
b. Thực thi cao
Các chuyên gia cơ sỡ dữ liệu có thể cấu hình máy chủ cơ sở dữ liệu MySQL đặc trưng cho các ứng dụng đặc thù thông qua kiến trúc storage-engine. MySQL có thể đáp ứng khả năng xử lý những yêu cầu khắt khe nhất của từng hệ thống, MySQL cịn đưa ra các “cơng cụ” cần thiết cho các hệ thống doanh nghiệp khó tính bằng tiện ích tải tốc độ cao, bộ nhớ cache và các cơ chế xử lý nâng cao khác.
c. Sử dụng ngay
Các tiêu chuẩn đảm bảo của MySQL giúp cho người dùng vững tin và chọn sử dụng ngay, MySQL đưa ra nhiều tùy chọn và các giải pháp để người sử dụng dùng ngay cho server cơ sở dữ liệu MySQL
d. Hỗ trợ giao dịch
MySQL hỗ trợ giao dịch mạnh 1 cách tự động, thống nhất, độc lập và bền vững, ngoài ra khả năng giao dịch cũng được phân loại và hỗ trợ giao dịch đa dạng mà người viết không gây trở ngại cho người đọc và ngược lại.
e. Nơi tin cậy để lưu trữ web và dữ liệu
Do MySQL có engine xử lý tốc độ cao và khả năng chèn dữ liệu nhanh, hỗ trợ tốt cho các chức năng chuyên dùng cho web,… Nên MySQL là lựa chọn tốt nhất cho các ứng dụng web và các ứng dụng web doanh nghiệp.
f. Bảo mật tốt
Doanh nghiệp nào cũng cần tính năng bảo mật dữ liệu tuyệt đối vì đó chính là lợi ích quan trọng hàng đầu và đó cũng là lý do mà các chuyên gia về cơ sỡ dữ liệu chọn dùng MySQL. MySQL có các kỹ thuật mạnh trong việc xác nhận truy cập cơ sở dữ liệu và chỉ có người dùng đã được xác nhận mới có thể truy cập vào server cơ sở dữ liệu.
g. Phát triển ứng dụng hỗn hợp
</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">MySQL cung cấp hỗ trợ hỗn hợp cho bất kỳ sự phát triển ứng dụng nào nên MySQL được xem là cơ sở dữ liệu mã nguồn mở phổ biến nhất thế giới.
h. Dễ quản lý
Quá trình cài đặt MySQL diễn ra khá nhanh chóng trên Microsoft Windows, Linux, Macintosh hoặc Unix. Sau khi cài đặt, các tính năng tự động mở rộng không gian, tự khởi động lại và cấu hình động được thiết lập sẵn sàng cho người quản trị cơ sở dữ liệu làm việc.
i. Mã nguồn tự do và hổ trợ xuyên suốt
Nhiều doanh nghiệp lo lắng việc sử dụng mã nguồn mở là khơng an tồn và khơng được hỗ trợ tốt vì đa số tin vào các phần mềm có bản quyền, nhưng đối với MySQL, các nhà doanh nghiệp hồn tồn có thể n tâm về điều này, MySQL có chính sách bồi thường hẳn hoi và luôn hỗ trợ tối đa cho quý doanh nghiệp.
j. Chi phí thấp
Đối với các dự án phát triển mới, nếu các doanh nghiệp sử dụng MySQL thì đó là một chọn lựa đúng đắn vừa tiết kiệm chi phí vừa đáng tin cậy.
1.3.4. Tại sao phải sử dụng hệ quản trị cơ sở dữ liệu MySQL a. Tốc độ
MySQL rất nhanh, những nhà phát triển cho rằng MySQL là cơ sở dữ liệu nhanh nhất mà bạn có thể có.
b. Dễ sử dụng
MySQL tuy có tính năng cao nhưng thực sự là một hệ thống cơ sở dữ liệu rất đơn giản, ít phức tạp khi cài đặt và quản trị hơn các hệ thống lớn .
c. Giá thành
MySQL là miễn phí cho hầu hết các việc sử dụng trong một tổ chức. d. Hỗ trợ ngôn ngữ truy vấn
MySQL hiểu SQL là ngôn ngữ của sự chọn lựa cho tất cả các hệ thống cơ sở dữ liệu hiện đại
e. Năng lực
Nhiều client có thể truy cập đến server trong cùng một thời gian. Các client có thể sử dụng nhiều cơ sở dữ liệu một cách đồng thời.
f. Kết nối và bảo mật
</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">MySQL được nối mạng một cách đầy đủ, các cơ sở dữ liệu có thể được truy cập từ bất kỳ nơi nào trên Internet do đó bạn có thể chia sẽ dữ liệu của bạn với bất kỳ ai, bất kỳ nơi nào.
g. Tính linh động
MySQL chạy trên nhiều hệ thống UNIX cũng như không phải UNIX chẳng hạn như Windows hay OS/2. MySQL chạy được các với mọi phần cứng từ các máy PC ở nhà cho đến các máy server.
h. Sự phân phối rộng
MySQL rất dễ dàng đạt được, chỉ cần sử dụng trình duyệt web của bạn. i. Sự hổ trợ
Bạn có thể tìm thấy các tài nguyên có sẵn mà MySQL hỗ trợ. Cộng đồng MySQL rất có trách nhiệm. Họ trả lời các câu hỏi trên mailing list thường chỉ trong vài phút. Khi lỗi được phát hiện, các nhà phát triển sẽ đưa ra cách khắc phục nhanh nhất.
<b>1.4. Tổng quan về mơ hình MVC Pattern </b>
1.4.1. Lịch sử ra đời của mơ hình MVC
MVC là viết tắt của Model - View – Controller được phát minh tại Xerox Parc vào những năm 70, bởi TrygveReenskaug. MVC lần đầu tiên xuất hiện công khai là trong Smalltalk-80. Sau đó trong một thời gian dài hầu như khơng có thơng tin nào về MVC, ngay cả trong tài liệu 80 Smalltalk. Các giấy tờ quan trọng đầu tiên được công bố trên MVC là “A Cookbook for Using the Model-View-Controller User Interface Paradigm in Smalltalk – 80”, bởi Glenn Krasner và Stephen Pope, xuất bản trong tháng 8 / tháng 9 năm 1988.
1.4.2. Khái niệm
MVC Là một trong những design pattern. Được vận hành để tách mã lệnh thành 3 phần riêng biệt. Ở mỗi phần MVC sẽ có những chức năng đặc thù. Để xử lý các tác vụ mà request gởi tới. MVC làm cho mã lệnh trở nên trong sáng, dễ phát triển và dễ nâng cấp theo thời gian.
1.4.3. Đặc điểm của mơ hình MVC
Cái lợi ích quan trọng nhất của mơ hình MVC là nó giúp cho ứng dụng dễ bảo trì, module hóa các chức năng và được xây dựng nhanh chóng. MVC tách các tác vụ của ứng dụng thành các phần riêng lẻ model, view, controller giúp cho việc
</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">xây dựng ứng dụng nhẹ nhàng hơn. Dễ dàng thêm các tính năng mới và các tính năng cũ có thể dễ dàng thay đổi. MVC cho phép các nhà phát triển và các nhà thiết kế có thể làm việc đồng thời với nhau. MVC cho phép thay đổi trong 1 phần của ứng dụng mà không ảnh hưởngđến các phần khác.
Chính vì vậy mà kiến trúc MVC đã được ứng dụng để xây dựng rất nhiều framework và thư viện đồ họa khác nhau.
1.4.4. Kiến trúc mơ hình MVC
Mơ hình MVC được chia làm 3 lớp xử lý gồm Model – View – Controller: - Model: là nơi chứa những nghiệp vụ tương tác với dữ liệu hoặc hệ quản trị cơ sở dữ liệu (mysql, mssql… ); nó sẽ bao gồm các class/function xử lý nhiều nghiệp vụ như kết nối database, truy vấn dữ liệu, thêm – xóa – sửa dữ liệu…
- View: là nới chứa những giao diện như một nút bấm, khung nhập, menu, hình ảnh… nó đảm nhiệm nhiệm vụ hiển thị dữ liệu và giúp người dùng tương tác với hệ thống.
- Controller: là nới tiếp nhận những yêu cầu xử lý được gửi từ người dùng, nó sẽ gồm những class/ function xử lý nhiều nghiệp vụ logic giúp lấy đúng dữ liệu thông tin cần thiết nhờ các nghiệp vụ lớp Model cung cấp và hiển thị dữ liệu đó ra cho người dùng nhờ lớp View.
Hình 1.2: Mơ hình MVC. 1.4.5. Quy trình hoạt động của mơ hình MVC
- Khi có một u cầu từ phía máy client gửi đến server, bộ phận Controller sẽ tiếp nhận và có nhiệm vụ xử lý yêu cầu đó. Ngồi ra, khi cần thiết, nó sẽ gọi đến thành phần Model, là bộ phận làm việc với Database.
- Khi xử lý xong yêu cầu, tất cả kết quả trả về được đẩy đến View, tại View sẽ lấy ra mã HTML thành giao diện và trả HTML về hiển thị trên trình duyệt.
</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">1.4.6. Ưu điểm và nhược điểm của mơ hình MVC a. Ưu điểm
- Trình tự xử lý rất rõ ràng
- Mơ hình MVC quy hoạch các class/function vào các thành phần riêng biêt Controller - Model - View, việc đó làm cho q trình phát triển - quản lý - vận hành - bảo trì web diễn ra thuận lợi hơn, tạo ra được các chức năng chuyên biệt hoá đồng thời kiểm sốt được luồng xử lý.
- Tạo mơ hình chuẩn cho dự án, khi người có chun mơn ngoài dự án tiếp cận với dự án dễ dàng hơn.
- Mơ hình đơn giản, dễ hiểu, xử lý những nghiệp vụ đơn giản, và dễ dàng triển khai với các dự án nhỏ.
b. Nhược điểm
Đối với các dự án tính phức tạp cao thì mơ hình MVC trở nên khơng khả dụng.
1.4.7. Ứng dụng thực tế mơ hình MVC
Có rất nhiều hệ thống, ứng dụng - phần mềm được xây dựng theo chuẩn mơ hình MVC và được giới thiệu, phân phối như :
Zend Framework 1 & 2
Design Pattern là một kỹ thuật trong lập trình hướng đối tượng, cung cấp cho chúng ta cách tư duy trong các tình huống xảy ra của lập trình hướng đối tượng cũng như trong q trình phân tích thiết kế và phát triển phần mềm. Vì vậy design pattern khơng phải là một class, cũng không phải là một library và cũng không hề là một ngôn ngữ cụ thể nào cả.
Design pattern cung cấp cho chúng ta các mẫu thiết kế các giải pháp cho các vấn đề chung thường gặp trong lập trình đảm bảo sẽ cung cấp cho chúng ta các giải pháp tối ưu trong việc giải quyết các vấn đề trong lập trình.
b. Repository Pattern là gì?
</div><span class="text_page_counter">Trang 32</span><div class="page_container" data-page="32">Repository pattern là lớp trung gian giữa tầng business logic và data access, giúp cho việc truy cập dữ liệu chặt chẽ và bảo mật hơn.Đóng vai trị là một lớp kết nối giữa tầng business và model của ứng dụng.
Thông thường thì các phần truy xuất, giao tiếp với database năm rải rác ở trong code, khi bạn muốn thực hiện một thao tác lên database thì phải tìm trong code cũng như tìm các thuộc tính trong bảng để xử lý. Điều này gây lãng phí thời gian và cơng sức rất nhiều.
Với repository design pattern thì việc thay đổi ở code sẽ không ảnh hưởng quá nhiều công sức chúng ra chỉnh sửa.
Một nơi duy nhất để thay đổi quyền truy cập dữ liệu cũng như xử lý dữ liệu.
Một nơi duy nhất chịu trách nhiệm cho việc mapping các bảng vào object.
Tăng tính bảo mật và rõ ràng cho code.
Rất dễ dàng để thay thế một repository với một implementation giả cho việc testing, vì vậy bạn không cần chuẩn bị một cơ sở dữ liệu có sẵn.
c. Mơ hình làm việc
Hình 1.3: Mơ hình hoạt động chính.
<b>1.5. Tổng quan về lập trình hướng đối tượng OOP </b>
1.5.1. Lập trình hướng đối tượng OOP là gì?
Lập trình hướng đối tượng (tiếng Anh: Object-oriented programming, viết tắt: OOP) là một mẫu hình lập trình dựa trên khái niệm "cơng nghệ đối tượng", mà trong đó, đối tượng chứa đựng các dữ liệu, trên các trường, thường được gọi là các thuộc tính và mã nguồn, được tổ chức thành các phương thức. Phương thức
</div><span class="text_page_counter">Trang 33</span><div class="page_container" data-page="33">giúp cho đối tượng có thể truy xuất và hiệu chỉnh các trường dữ liệu của đối tượng khác, mà đối tượng hiện tại có tương tác (đối tượng được hỗ trợ các phương thức "this" hoặc "self").
Giúp tăng năng xuất và đơn giản hóa cơng việc xây dựng phần mềm, bảo trì phần mềm.
Cho phép lập trình viên tập trung vào các đối tượng giống như trong thực tế.
1.5.2. Ưu điểm của lập trình hướng đối tượng OOP
Vì lập trình hướng đối tượng ra đời sau nên nó khắc phục được tất cả các điểm yếu của các phương pháp lập trình trước đó. Cụ thể nó các ưu điểm sau:
- Dễ dàng quản lý code khi có sự thay đổi chương trình. - Dễ mở rộng dự án.
- Tiết kiệm được tài nguyên đáng kể cho hệ thống. - Có tính bảo mật cao.
- Có tính tái sử dụng cao.
1.5.3. Một số khái niệm cơ bản trong lập trình hướng đối tượng a. Đối tượng (Object)
Trong lập trình hướng đối tượng, đối tượng được hiểu như là 1 thực thể: người, vật hoặc 1 bảng dữ liệu, . . .
Một đối tượng bao gồm 2 thông tin: thuộc tính và phương thức:
Thuộc tính chính là những thơng tin, đặc điểm của đối tượng. Ví dụ: một người sẽ có họ tên, ngày sinh, màu da, kiểu tóc, . . .
Phương thức là những thao tác, hành động mà đối tượng đó có thể thực hiện. Ví dụ: một người sẽ có thể thực hiện hành động nói, đi, ăn, uống, . . .
Ngồi ra, lớp cịn được dùng để định nghĩa ra kiểu dữ liệu mới. 1.5.4. Các tính chất của lập trình hướng đối tượng
a. Tính trừu tượng (abstraction)
</div><span class="text_page_counter">Trang 34</span><div class="page_container" data-page="34">Tính chất này giúp chúng ta tập trung vào những vấn đề cốt lõi cần thiết của đối tượng thay vì quan tâm đến cách nó thực hiện. Nó cũng làm tăng khả năng mở rộng khi sử dụng cùng với tính đa hình và kế thừa trong lập trình hướng đối tượng.
b. Tính kế thừa (inheritance)
Lớ p cha có thể chia sẻ dữ liê ̣u và phương thức cho lớp con kế thừa từ nó, nhờ đó ko phải viết la ̣i các logic chung.
c. Tính đóng gói (encapsulation)
Các dữ liệu và phương thức có liên quan với nhau được đóng gói thành các lớp để tiện cho việc quản lý và sử dụng.
Đóng gói cịn để che giấu một số thông tin và chi tiết cài đặt nội bộ để bên ngồi khơng thể nhìn thấy.
d. Tính đa hình (polymorphism)
Tính đa hình được thể hiện qua việc viết lại các method (hàm) từ class cha thơng qua class kế thừa nó hoặc việc triển khai các interface. Hoặc có thể được hiểu là Lớp con sẽ viết lại những phương thức ở lớp cha (overwrite).
1.5.5. Các mức độ truy cập của một phương thức
Private: khắt khe nhất, chỉ trong class khai báo biến này mới có quyền sử dụng.
Protected: ít khắt khe hơn Private một chút, ở ngồi class khơng thể truy cập được biến này. Tuy nhiên class con thì có thể.
Public: có thể truy cập từ mọi nơi thông qua câu lệnh $obj -> tên_biến;. 1.5.6. Sự khác biệt giữa Abstract class và Interface
Chỉ có thể kế thừa nhiều interface khác. Có thể kế thừa từ 1 lớp và nhiều interface.
Chỉ chứa các khai báo và khơng có phần nội dung
Có thể chứa các thuộc tính thường và các phương thức bình thường bên
</div><span class="text_page_counter">Trang 35</span><div class="page_container" data-page="35">Dùng để định nghĩa 1 khuôn mẫu hoặc quy tắc chung.
Dùng để định nghĩa cốt lõi của lớp, thành phần chung của lớp và sử dụng cho nhiều đối tượng cùng kiểu. Cần thời gian để tìm phương thức thực
tế tương ứng với lớp dẫn đến thời gian chậm hơn 1 chút.
Nhanh hơn so với interface.
Khi ta thêm mới 1 khai báo. Ta phải tìm hết tất cả những lớp có thực thi interface này để định nghĩa nội dung cho phương thức mới.
Đối với abstract class, khi đĩnh nghĩa 1 phương thức mới ta hồn tồn có thể định nghĩa nội dung phương thức là rỗng hoặc những thực thi mặc định nào đó. Vì thế tồn bộ hệ thống vẫn chạy bình thường.
Bảng 1.1: Sự khác biệt giữa Abstract class và Interface
<b>1.6. Tổng quan về PHP framework Laravel </b>
1.6.1. Lịch sử phát triển của laravel
Taylor Otwell đã tạo Laravel như một nỗ lực để cung cấp một giải pháp thay thế nâng cao hơn cho CodeIgniter framework, vì nó không cung cấp một số tính năng nhất định như là hỗ trợ tích hợp xác thực (authentication) và ủy quyền (authorization) người dùng.
Bản phát hành beta đầu tiên của Laravel được phát hành vào ngày 9 tháng 6 năm 2011, tiếp theo là bản phát hành Laravel 1 sau đó trong cùng một tháng.
Laravel 2 được phát hành vào tháng 9 năm 2011 (3 tháng sau), mang lại nhiều cải tiến khác nhau từ tác giả và cộng đồng. Các tính năng chính mới bao gồm sự hỗ trợ cho các bộ điều khiển (controller), nó đã làm cho Laravel 2 trở thành một framework tuân thủ đầy đủ MVC, hỗ trợ sẵn cho nguyên lý điều khiển (IoC) và một hệ thống templating gọi là Blade. Nhược điểm, hỗ trợ cho các gói của bên thứ ba (third-party packages) đã được gỡ bỏ trong Laravel 2.
Laravel 3 được phát hành vào tháng 2 năm 2012 với một loạt các tính năng mới bao gồm giao diện dòng lệnh - commandline interface (CLI) có tên Artisan, hỗ trợ sẵn cho nhiều hệ thống quản lý cơ sở dữ liệu, database migrations, hỗ trợ xử lý events…
</div><span class="text_page_counter">Trang 36</span><div class="page_container" data-page="36">Laravel 4, được đặt tên là Illuminate, được phát hành vào tháng 5 năm 2013. Nó được viết thành một khung hồn chỉnh của Laravel framework, di chuyển bố cục của nó thành một tập các gói riêng biệt được phân phối thơng qua Composer, phục vụ như một trình quản lý gói ứng dụng.
Laravel 5 được phát hành vào tháng 2 năm 2015 là kết quả của những thay đổi nội bộ đã kết thúc trong việc thay đổi bản phát hành Laravel 4.3 trong tương lai. Laravel 5 cũng giới thiệu cấu trúc cây thư mục mới cho các ứng dụng đã phát triển.
Vào tháng 3 năm 2015, một khảo sát SitePoint đã liệt kê Laravel là PHP framework phổ biến nhất.
Laravel 5.1, phát hành vào tháng 6 năm 2015, là bản phát hành đầu tiên của Laravel để nhận hỗ trợ dài hạn (LTS), với các bản sửa lỗi có sẵn trong hai năm và các bản vá bảo mật trong ba năm.
Laravel 5.3, được phát hành vào ngày 23 tháng 8 năm 2016. Các tính năng mới trong 5.3 tập trung vào việc cải thiện tốc độ phát triển bằng cách bổ sung thêm các cải tiến cho các tác vụ phổ biến.
Laravel 5.4 Phiên bản này có nhiều tính năng mới, như Laravel Dusk, Laravel Mix, Blade Components và Slots, Markdown Emails và nhiều thứ khác.
Laravel 5.5 phát hành vào ngày 30 tháng 8 năm 2017 là phiên bản LTS thứ 2 (Laravel 5.5 sẽ là phiên bản LTS Release tiếp theo).
Laravel 5.6 phát hành vào ngày 7 tháng 2 năm 2018.
Laravel 5.7 phát hành vào ngày 4 tháng 9 năm 2018 với những cập nhật. Laravel 5.8 phát hành vào ngày 26 tháng 2 năm 2019. Laravel 5.8 tiếp tục các cải tiến được thực hiện trong Laravel 5.7 bằng cách giới thiệu các mối quan hệ Eloquent có một lần, cải thiện xác thực email, đăng ký tự động dựa trên chính sách ủy quyền, bộ đệm và trình điều khiển phiên của DynamoDB, cấu hình múi giờ của trình lập lịch biểu được cải thiện các kênh, tuân thủ trình điều khiển bộ đệm PSR-16, cải tiến artisan serve lệnh, hỗ trợ PHPUnit 8.0, hỗ trợ Carbon 2.0, hỗ trợ Pheanstalk 4.0 và một loạt các sửa lỗi và cải thiện khả năng sử dụng khác.
1.6.2. Khái niệm
Framework là một thư viện các lớp đã được xây dựng hoàn chỉnh, bộ khung để phát triển các Phần mềm ứng dụng.
</div><span class="text_page_counter">Trang 37</span><div class="page_container" data-page="37">Laravel là một PHP Framework mã nguồn mở và miễn phí, được phát triển bởi Taylor Otwell và nhằm mục tiêu hỗ trợ phát triển các ứng dụng web theo cấu trúc model- view- controller (MVC). Những tính năng nổi bật của Laravel bao gồm cú pháp dễ hiểu- rõ ràng, một hệ thống đóng gói Modular và quản lý gói phụ thuộc, nhiều cách khác nhau để truy cập vào các cơ sở dữ liệu quan hệ, nhiều tiện ích khác nhau hỗ trợ việc triển khai vào bảo trì ứng dụng.
1.6.3. Các tính năng chính của Laravel Framework
- Modularity: chia modul một cách rất rõ ràng và khoa học, với những dự án lớn Laravel hỗ trợ chúng ta chia dự án ra làm những modul nhỏ giúp dự án được quản lí dễ dàng hơn.
- Testability: thực hiện test trên từng dịng code và đảm bảo nó chạy đúng như logic và code sẽ không ảnh hưởng đến những phần khác.
- Routing: Laravel cung cấp cho chúng ta cách khai báo một route trong dự án cực kì đơn giản và mềm dẻo, với các phương thức như GET, POST, PUT, DELETE..
- Configuration Management: Laravel cho phép chúng ta làm việc này rất dễ dàng bằng việc tạo ra 1 file .env (Environment) để chúng ta cấu hình các thơng số.
- QueryBuilder and ORM: Đây là 2 tính năng cực kì quan trọng trong laravel, nó cho phép chúng ta làm việc với CSDL một cách dễ dàng, cung cấp các câu truy vấn ngắn gọn để lấy dự liệu. Nó làm việc được với nhiều cơ sở dự liệu khác nhau như PostgreSQL, SQLite, Mysql and SQL Server.
- Schema builder, migration and seeding: Đây là các tính năng cho phép các bạn định nghĩa cấu trúc database trong code khi làm việc với Laravel, các bạn có thể tạo table, xố table, tạo cột, xố cột... Tính năng Seeding cung cấp cho chúng ta tạo ra các dữ liệu mẫu trong database.
- Template Engine: Laravel sử dụng Blade cho phần view của mình, với Blade chúng ta có thể show dữ liệu và khai báo các câu điều khiển ở trên view một cách dễ dàng.
- E-Mailing: Laravel cung cấp cho chúng ta thư viện để có thể gửi email trong dự án.
</div><span class="text_page_counter">Trang 38</span><div class="page_container" data-page="38">- Authentication: Laravel đã cung cấp sẵn tồn bộ các tính năng liên quan đến authentication như login, logout, register, forgot password..
- Redis: Đây là phương thức cache dữ liệu giúp cho website chúng ta chạy nhanh hơn và ít truy vấn vào database hơn.
- Event and command bus: Tính năng cho phép bắt các sự kiện xảy ra trong ứng dụng.
- Queues: Laravel tương thích với nhiều dịch vụ queues như Amazon SQS, Beanstalkd and IronMQ.
1.6.4. Tại sao nên dùng Framework Laravel
Laravel có một hệ thống có kiến trúc thống nhất, khoa học và cực đơn giản giúp những người mới tiếp cận framework PHP có thể nắm bắt được ngay. Các framework khác thật sự khá là khó để bắt đầu, đặc biệt là Zend, Yii. Tuy rất đơn giản nhưng Laravel hồn tồn có thể xây dựng những hệ thống ứng dụng web cực phức tạp, với hiệu năng cao.
Các tài nguyên liên quan đến Laravel rất đa dạng, dễ sử dụng.
Trực quan, đó là những gì mọi người nói về viết mã trong Laravel, giúp chúng ta tập trung vào các nhiệm vụ chính và các đoạn mã viết trong Laravel được rõ ràng và rất dễ dàng trong bảo trì mã nguồn.
Tích hợp cơng cụ dịng lệnh Artisan, giúp các tác vụ trong phát triển ứng dụng thật đơn giản.
Bộ máy blade template thực sự rất hay, nó giúp cho làm việc giữa PHP và HTML thật đơn giản, sáng sủa và tách biệt giữa mã hiển thị và mã logic nghiệp vụ, cái mà trước đó chỉ có thể biết đến ở .NET hoặc Java.
Laravel hỗ trợ việc cài đặt các gói thư viện và bản thân nó sử dụng rất nhiều các gói thư viện khác để tạo ra các tính năng tuyệt vời. Giúp bạn tự động hóa, giảm rất nhiều các tác vụ thủ cơng trong q trình build ứng dụng và triển khai sản phẩm.
Luôn đổi mới, tích cực và sáng. Laravel ln thay đổi trong các phiên bản, tìm kiếm những tính năng hay, những gói thư viện tốt nhất để tích hợp vào.
1.6.5. Những ưu điểm của Laravel Framework a. Tốc độ xử lý nhanh
- Nền tảng này có thể hỗ trợ tạo nên các trang web lớn, dự án lớn.
</div><span class="text_page_counter">Trang 39</span><div class="page_container" data-page="39">- Laravel framework được xây dựng với mã nguồn mỡ và hoàn toàn miễn
d. Được xây dựng theo đúng chuẩn W3C
W3C là tiêu chuẩn thiết kế web, bất kì website nào được đánh giá theo đúng chuẩn này thì đều sẽ hoạt động tốt và ít nhiều mang lại những hiệu quả thực sự dành cho cơng ty, đơn vị sở hữu nó.
e. 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.
Hình1.4: Mơ hình triển khai trong laravel. f. Có tích hợp sẵn nhiều tính năng
Laravel đã cung cấp cho người dùng rất nhiều các nhóm tính năng giúp q trình phát triển trở nên nhanh chóng
g. Module đa dạng
</div><span class="text_page_counter">Trang 40</span><div class="page_container" data-page="40">Laravel được xây dựng dựa trên hơn 20 thư viện khác nhau. Hiểu được cách thiết kế framework khiến các lập trình hồn tồn có thể đóng góp cho framework cũng như mở rộng chúng một cách dễ dàng.
h. Tính bảo mật cao
Theo ý kiến của nhiều chuyên gia, Laravel Framework được đánh giá là có độ bảo mật cao hơn nền tảng WordPress.
i. Cộng đồng người dùng rộng lớn
Như nhiều nền tảng mã nguồn mở khác, Laravel Framwork cũng có cộng đồng người dùng rộng rãi và sẵn sàng hỗ trợ bạn trong quá trình thiết lập và vận hành dự án. Đặc biệt việc fix bug hay tìm lỗi trở nên nhanh chóng, dễ dàng và tiết kiệm thời gian hơn rất nhiều.
</div>