Ưu, nhược điểm của JavaScriptƯu điểm của JavaScript:- Dễ hiểu, dễ học hơn so với các ngôn ngữ lập trình khác- Dễ dàng phát hiện và khắc phục, sửa chữa lỗi- Hoạt động được trên nhiều nền
GIỚI THIỆU CHUNG VÀ KHẢO SÁT HỆ THỐNG
Giới thiệu chung về các ngôn ngữ
HTML là viết tắc của cụm từ HyperText Markup Language, tạm dịch là ngôn ngữ đánh dấu siêu văn bản Phiên bản đầu tiên được ra đời vào năm 1991 Một tập tin HTML chẳng qua là một tập tin bình thường, có đuôi html hoặc htm Trải qua nhiều phiên bản đến 2014 đã được nâng cấp lên thành HTML với nhiều thẻ mới được bổ sung
HTML đóng vai trò tạo dựng nên bộ khung xương cho trang web Khi viết các trình duyệt như Chrome, Firefox, Opera sẽ hiểu được và hiển thị để cho người dùng dễ dàng nhìn thấy hơn Tuy nhiên cần có sự góp mặt của ngôn ngữ CSS, sẽ định dạng hiển thị trở nên đẹp mắt hơn.
Cấu trúc chung của một trang HTML
Tiêu đề của trang Web
Một số thẻ HTML cơ bản
1 Thẻ : Tạo đầu mục trang
2 Thẻ : Tạo tiêu đề trang trên thanh tiêu đề, đây là thẻ bắt buộc
Thẻ title cho phép bạn trình bày chuỗi trên thanh tựa đề của trang Web mỗi khi trang Web đó được duyệt trên trình duyệt Web.
3 Thẻ : Tất cả các thông tin khai báo trong thẻ đều có thể xuất hiện trên trang Web Những thông tin này có thể nhìn thấy trên trang Web.
4 Thẻ hình ảnh : Cho phép bạn chèn hình ảnh vào trang Web Thẻ này thuộc loại thẻ không có thẻ đóng.
5 Thẻ liên kết : Là loại thẻ dùng để liên kết giữa các trang Web hoặc liên kết đến địa chỉ Internet, Mail hay Intranet(URL) và địa chỉ trong tập tin trong mạng cục bộ (UNC).
CSS là chữ viết tắt của Cascading Style Sheets, nó là một ngôn ngữ được sử dụng để tìm và định dạng lại các phần tử được tạo ra bởi các ngôn ngữ đánh dấu (HTML) Nói ngắn gọn hơn là ngôn ngữ tạo phong cách cho trang web Bạn có thể hiểu đơn giản rằng, nếu HTML đóng vai trò định dạng các phần tử trên website như việc tạo ra các đoạn văn bản, các tiêu đề, bảng,…thì CSS sẽ giúp chúng ta có thể thêm style vào các phần tử HTML đó như đổi bố cục, màu sắc trang, đổi màu chữ, font chữ, thay đổi cấu trúc…
CSS được phát triển bởi W3C (World Wide Web Consortium) vào năm 1996, vì HTML không được thiết kế để gắn tag để giúp định dạng trang web.
Phương thức hoạt động của CSS là nó sẽ tìm dựa vào các vùng chọn, vùng chọn có thể là tên một thẻ HTML, tên một ID, class hay nhiều kiểu khác Sau đó là nó sẽ áp dụng các thuộc tính cần thay đổi lên vùng chọn đó.
Mối tương quan giữa HTML và CSS rất mật thiết HTML là ngôn ngữ markup (nền tảng của site) và CSS định hình phong cách (tất cả những gì tạo nên giao diện website), chúng là không thể tách rời.
Bố cục và cấu trúc một đoạn CSS
Bố cục CSS thường chủ yếu dựa vào hình hộp và mỗi hộp đều chiếm những khoảng trống trên trang của bạn với các thuộc tính như:
● Padding: Gồm không gian xung quanh nội dung (ví dụ: xung quanh đoạn văn bản).
● Border: Là đường liền nằm ngay bên ngoài phần đệm.
● Margin: Là khoảng cách xung quanh bên ngoài của phần tử. vùng chọn { thuộc tính : giá trị; thuộc tính: giá trị; }
CSS sẽ được khai báo bằng vùng chọn, sau đó các thuộc tính và giá trị sẽ nằm bên trong cặp dấu ngoặc nhọn {} Mỗi thuộc tính sẽ luôn có một giá trị riêng, giá trị có thể là dạng số, hoặc các tên giá trị trong danh sách có sẵn của CSS Phần giá trị và thuộc tính phải được cách nhau bằng dấu hai chấm, và mỗi một dòng khai báo thuộc tính sẽ luôn có dấu chấm phẩy ở cuối Một vùng chọn có thể sử dụng không giới hạn thuộc tính.
Cách nhúng CSS vào website Để CSS có thể thực thi trên website hoặc HTML Documents thì phải tiến hành nhúng CSS vào website Nếu không, các định dạng CSS sẽ không thực thi trên HTML.
Có 3 cách nhúng CSS vào website:
● Inline CSS – Nhúng trực tiếp vào tài liệu HTML thông qua cặp thẻ
● Internal CSS – dùng thẻ bên trong thẻ của HTML để tạo ra nơi viết mã CSS.
● External CSS – Tạo một tập tin css riêng và nhúng vào tài liệu HTML thông qua cặp thẻ .
Inline CSS Đặt thuộc tính style vào thẻ mở của phần tử HTML, giá trị của thuộc tính style là các cặp thuộc tính định dạng CSS Mã CSS chỉ tác động nên chính phần tử đó.
Internal CSS Đặt các cặp thuộc tính định dạng CSS vào bên trong cặp thẻ Cặp thẻ thì được đặt bên trong cặp thẻ
Với External CSS: Ta đặt các thuộc tính định dạng vào bên trong tập tin CSS Đây là một tập tin hoàn toàn độc lập so với file (File này thường được đặt phần mở rộng là css) sau đó dùng thẻ link đặt ở phần head (cặp thẻ của các tập tin HTML) để có thể thực hiện nhúng tập tin CSS vào trang web.
1.1.3 Tìm hiểu về ngôn ngữ Javascript
JavaScript là một trong số các ngôn ngữ lập trình chính trong thiết kế website bên cạnh HTML và CSS Chúng được tích hợp, nhúng vào HTML để tạo web động, tăng tính tương tác và phát triển những ứng dụng mạng chạy trên máy chủ/ client. Một số thư viện, khung viết từ JavaScript:
- js: Ứng dụng thời gian thực
- ReactJS: Chuyên xây dựng ứng dụng di động
- AngularJS: Chuyên viết ứng dụng cá nhân. Ưu, nhược điểm của JavaScript Ưu điểm của JavaScript:
- Dễ hiểu, dễ học hơn so với các ngôn ngữ lập trình khác
- Dễ dàng phát hiện và khắc phục, sửa chữa lỗi
- Hoạt động được trên nhiều nền tảng trình duyệt
- Hỗ trợ web tương tác hiệu quả với người truy cập.
- Tiết kiệm lưu lượng tải dữ liệu cho máy chủ (server) do người dùng sẽ xác nhận input (đầu vào) rồi mới gửi web đến máy chủ.
- Ngôn ngữ lập trình JavaScript cho phép tạo nhiều giao diện khác nhau.
- Phản hồi tức thời đến người truy cập.
- Chỉ chạy được trong trình duyệt web
- Bị khai thác dễ dàng
- Không đồng nhất do mỗi thiết bị sẽ được triển khai khác nhau
- Dễ bị sử dụng để thực thi mã độc trên máy người sử dụng.
Cách thức hoạt động và ứng dụng của Javascript
Cách thức JavaScript hoạt động: Ngôn ngữ JavaScript được nhúng trực tiếp vào website hay được tham chiếu qua thư mục js riêng biệt, Script sau khi được tải về máy sẽ được xử lý tại chỗ Ứng dụng của JavaScript:
- Lập trình website: Js hỗ trợ tạo hiệu ứng trên web, tạo các tương tác với người sử dụng.
- Xây dựng các app, ứng dụng, tạo trò chơi
- Tạo ứng dụng web cho server (máy chủ).
- >>> JavaScript được đánh giá là ngôn ngữ phù hợp với người bắt đầu học lập trình hoặc yêu thích phát triển web front-end/ full stack; am hiểu về JavaScript rất có lợi cho lập trình viên.
Sự khác biệt giữa các ngôn ngữ lập trình với JavaScrip t
Java và JavaScript có phải là một?
Tổng quát bài toán
Hiện nay với sự phát triển không ngừng của công nghệ thì nhu cầu của con người ngày càng tăng Trên thị trường hiện nay một phương tiện thông tin đã trở nên quen thuộc với chúng ta đó là điện thoại Chỉ với một vài thao tác bạn đã có thể kết nối tới bạn bè, người thân của mình trên khắp đất nước Không những nó là một phương tiện liên lạc mà còn đóng góp quan trọng trong các công việc làm ăn của các doanh nhân Còn đối với giới trẻ thì điện thoại di động đã dần trở thành một thứ đồ trang sức.
Thegioididong.com là một trong những website đặc thù áp dụng công nghệ thông tin vào hoạt động bán điện thoại qua mạng và sau này sẽ có xu hướng mở rộng.Và là một cửa hàng chuyên nhập điện thoại di động từ các công ty phân phối nổi tiếng như Nokia, Samsung, Motorola, Sony,… để bán lẻ lại cho người tiêu dùng Việc giao dịch với khách hàng chủ yếu diễn ra trên website.
Mục tiêu xây dựng trang web này nhằm giúp cho khách hàng có thể mua hàng trực tiếp từ xa thông qua mạng internet Khách hàng ở nhà hay tại cửa hàng vẫn có thể dễ dàng tham khảo thông tin sản phẩm mình tìm, so sánh giá cả các mặt hàng và lựa chọn cho mình loại sản phẩm phù hợp nhu cầu của mình, giúp công việc mua sắm một cách nhanh chóng, tiện lợi, tiết kiệm thời gian, đáp ứng được nhu cầu thực tế Hệ thống tìm kiếm dễ dàng, giao diện thân thiện Chỉ cần đăng nhập vào hệ thống với tài khoản đã có hay chỉ cần vài thao tác đăng ký đơn giản là khách hàng có thể tự do chọn mua và tạo đơn đặt hàng tại hệ thống.
1.1.2 Mô tả hoạt động của cửa hàng
- Quản lý và phân phối hoạt động của cửa hàng.
- Quyết định giá chính thức cho từng mặt hàng.
- Bán hàng qua mạng là một hình thức mới mà người mua hàng phải phải tự thao tác thông qua từng bước để có thể mua được hàng.
- Các sản phẩm được sắp xếp, phân chia theo nhiều chủng loại hàng hóa và có nhiều mặt hàng khác nhau để giúp cho người dùng dễ sử dụng, giúp cho người quản trị dễ thay thế, thêm bớt sản phẩm của mình Trong cách này, người dùng chỉ cần chọn một sản phẩm nào từ trong danh sách của từng loại sản phẩm thì những thông tin về loại sản phẩm đó sẽ hiện lên theo tên hàng hóa, hình ảnh, giá bán và nhưng mô tả ngắn về loại thiết bị đó, bên cạnh là trang liên kết để thêm sản phẩm vào trong giỏ mua hàng.
- Giỏ hàng chứa các thông tin lẫn số lượng hàng hóa người dùng mua và có thể được cập nhật vào trong giỏ.
- Khi khách hành muốn đặt hàng thì hệ thống hiển thị trang xác lập đơn đặt hàng cùng với thông tin về khách hàng và hàng hóa.
- Công việc của bộ phận này là thực hiện các nhiệm vụ quản trị mạng, quản lý thông tin của khách hàng, cập nhật thông tin của sản phẩm,… đảm bảo cơ sở dữ liệu luôn được cập nhật nhanh chóng.
1.1.3 Yêu cầu của hệ thống bán hàng qua mạng
Nhu cầu người sử dụng
- Nhu cầu của khách hàng khi truy cập vào trang web là tìm kiếm các sản phẩm
Do đó yêu cầu của chương trình là phải đáp ứng được những nhu cầu đó, sao cho khách hàng có thể tìm kiếm nhanh chóng và hiệu quả các loại sản phẩm mà họ muốn và cần mua.
- Chương trình phải có tính đa dạng và hấp dẫn nhằm thu hút sự quan tâm của nhiều người về công ty mình.
- Trang web phải dễ hiểu, giao diện phải dễ dùng, hấp dẫn và quan trọng là làm sao cho khách thấy những thông tin cần tìm cũng như thông tin liên quan.
- Điều quan trọng trong mua bán qua mạng là phải đảm bảo an toàn tuyệt đối những thông tin liên quan đến người dùng trong quá trình đặt mua hay thanh toán cũng được đảm bảo hàng được chuyển giao đúng nơi, đúng lúc.
Trang web đòi hỏi người quản trị phải thường xuyên theo dõi các thông tin về hàng hóa, xử lý đúng yêu cầu, đúng chức năng do mình nhập vào và thao tác dễ dàng với công việc quản lý dữ liệu:
- Được phép chỉnh sửa, xóa những thông tin sai, không phù hợp.
- Theo dõi quá trình mua bán.
- Theo dõi thông tin khách hàng nhập vào khi mua hàng, phải đảm bảo tính an toàn, bảo mật, chính xác.
- Theo dõi, xử lý các đơn đặt hàng và cập nhật các thông tin liên quan đến đơn đặt hàng của khách.
XÂY DỰNG HỆ THỐNG
Xác định các tác nhân
Administrator( Quản trị viên): là thành viên quản trị của hệ thống, có các quyền và chức năng như: tạo các tài khoản, quản lý sản phẩm, quản trị người dùng,…
Customer ( Thành viên): là hệ thống thành viên có chức năng: đăng ký, đăng nhập, tìm kiếm, xem, sửa thông tin cá nhân, xem giỏ hàng, đặt hàng,
Guess( Khách vãng lai): là Khách hàng chưa đăng ký, có chức năng: đăng ký, tìm kiếm, xem thông tin sản phẩm, thêm sản phẩm vào giỏ hàng và xem giỏ hàng.
Biểu đồ Use Case tổng quát
Biểu đồ Use Case tổng quát
Hình 2.1 Biểu đồ Use Case tổng quát
Đặc tả Use case
Đặc tả use case Tìm kiếm thông tin sản phẩm
Mô tả quá trình người dùng tìm kiếm sản phẩm
Ca sử dụng Tìm kiếm thông tin sản phẩm
Tác nhân Administrator hoặc Customer hoặc Guess
Mô tả Người dùng tìm kiếm sản phẩm Điều kiện trước Người dùng đang ở trang chủ
Luồng sự kiện chính 1 Người dùng nhập hoặc lựa chọn thông tin tìm kiếm theo giá, hãng,
2 Hệ thống tìm kiếm trong CSDL và hiển thị sản phẩm trùng khớp với tiêu chí tìm kiếm
Bảng 2.3 Đặc tả usecase Tìm kiếm thông tin sản phẩm Đặc tả use case Xem thông tin sản phẩm
Mô tả quá trình người dùng xem thông tin sản phẩm
Ca sử dụng Xem thông tin sản phẩm
Tác nhân Administrator hoặc Customer hoặc Guess
Mô tả Người dùng xem thông tin sản phẩm Điều kiện trước Sản phẩm đang được hiển thị
Luồng sự kiện chính 1 Người dùng click vào sản phẩm muốn xem
2 Hệ thống lấy thông tin sản phẩm từ CSDL và hiển thị chi tiết
Bảng 2.4 Đặc tả use case Xem thông tin sản phẩm Đặc tả use case Xem giỏ hàng
Mô tả quá trình tương tác giữa người dùng và hệ thống để xem giỏ hàng
Ca sử dụng Xem giỏ hàng
Tác nhân Customer hoặc Guess
Mô tả Người dùng xem giỏ hàng Điều kiện trước Biểu tượng giỏ hàng được hiển thị
Luồng sự kiện chính 1 Người dùng click vào giỏ hàng
2 Hệ thống lấy thông tin của giỏ hàng và hiển thị, bao gồm sản phẩm, số lượng, tổng số tiền,
Bảng 2.5 Đặc tả use case Xem giỏ hàng Đặc tả use case Thêm sản phẩm vào giỏ hàng
Mô tả hoạt động để người dùng thêm sản phẩm vào giỏ hàng
Ca sử dụng Thêm sản phẩm vào giỏ hàng
Tác nhân Customer hoặc Guess
Mô tả Người dùng xem giỏ hàng Điều kiện trước Sản phẩm đang hiển thị
Luồng sự kiện chính 1 Người dùng click vào giỏ hàng
2 Hệ thống lấy thông tin của giỏ hàng và hiển thị, bao gồm sản phẩm, số lượng, tổng số tiền,
Bảng 2.6 Đặc tả use case Thêm sản phẩm vào giỏ hàng Đặc tả use case Đăng ký thành viên
Mô tả quá trình đăng ký thành viên mới
Ca sử dụng Đăng ký thành viên
Tác nhân Administrator hoặc Guess
Mô tả Người dùng đăng ký thành viên mới Điều kiện trước Người dùng đang ở trang chủ
Luồng sự kiện chính 1 Người dùng bấm đăng ký và nhập các thông tin theo form.
2 Hệ thống kiểm tra thông tin nhập vào, nếu thông tin hợp lệ thì tài khoản thành viên sẽ được thêm vào CSDL
Luồng sự kiện phụ Nếu thông tin không hợp lệ, hiển thị thông báo yêu cầu nhập lại
Bảng 2.7 Đặc tả usecase Đăng ký thành viên Đặc tả use case Đặt hàng
Mô tả quá trình đặt hàng qua mạng
Ca sử dụng Đặt hàng
Mô tả Người dùng xác nhận mua hàng qua mạng Điều kiện trước Sản phẩm đang được hiển thị
Luồng sự kiện chính 1 Người dùng click vào nút đặt hàng và điền các thông tin cần thiết như địa chỉ, số điện thoại, chọn phương thức thanh toán,
2 Hệ thống lưu thông tin khách hàng và hoá đơn, thông báo đặt hàng thành công hay không thành công.
Bảng 2.8 Đặc tả use case Đặt hàng Đặc tả use case Đăng nhập
Mô tả quá trình người dùng đăng nhập
Ca sử dụng Đăng nhập
Tác nhân Administrator hoặc Customer
Mô tả Người dùng đăng nhập vào hệ thống Điều kiện trước Người dùng đã có tài khoản
Luồng sự kiện chính 1 Người dùng click vào đăng nhập và điền tên đăng nhập, mật khẩu.
2 Hệ thống so sánh thông tin với tên đăng nhập, mật khẩu trong CSDL
3 Nếu đúng, cho phép đăng nhập và hiển thị các chức năng của Customer
Luồng sự kiện 4 Nếu sai, hiển thị thông báo sai thông tin đăng nhập và yêu cầu nhập lại.
Bảng 2.9 Đặc tả use case Đăng nhập Đặc tả use case Đăng xuất
Mô tả quá trình người dùng đăng xuất
Ca sử dụng Đăng xuất
Tác nhân Administrator hoặc Customer
Mô tả Người dùng đăng xuất khỏi hệ thống Điều kiện trước Người dùng đã đăng nhập vào hệ thống
Luồng sự kiện chính 1 Người dùng click vào đăng xuất
2 Hệ thống tiến hành xóa session lưu thông tin đăng nhập để dừng phiên làm việc của Customer
Bảng 2.10 Đặc tả use case Đăng xuất Đặc tả use case Đổi mật khẩu
Mô tả quá trình người dùng đổi mật khẩu
Ca sử dụng Đổi mật khẩu
Tác nhân Administrator hoặc Customer
Mô tả Người dùng đổi mật khẩu Điều kiện trước Người dùng đã đăng nhập vào hệ thống
Luồng sự kiện chính 1 Người dùng click vào đổi mật khẩu, nhập mật khẩu cũ và mật khẩu mới
2 Hệ thống kiểm tra mật khẩu cũ và mới, nếu hợp lệ thì cập nhật mật khẩu mới vào CSDL
Luồng sự kiện phụ 3 Nếu mật khẩu cũ không đúng thì không cho phép đổi mật khẩu, thông báo sai mật khẩu cũ
4 Nếu mật khẩu mới không hợp lệ thì không lưu và thông báo nhập lại mật khẩu mới
Bảng 2.11 Đặc tả use case Đổi mật khẩu Đặc tả use case Thêm sản phẩm
Mô tả quá trình quản trị viên thêm sản phẩm mới
Ca sử dụng Thêm sản phẩm
Mô tả Administrator thêm sản phẩm mới vào CSDL Điều kiện trước Administrator đã đăng nhập vào tài khoản của mình
Luồng sự kiện chính 1 Administrator click vào thêm sản phẩm và điền các thông tin cần thiết
2 Hệ thống kiểm tra thông tin sản phẩm được nhập vào, nếu hợp lệ thì thêm vào CSDL
Luồng sự kiện phụ 3 Nếu thiếu thông tin hoặc thông tin không hợp lệ thì không lưu vào CSDL và thông báo thông tin không hợp lệ
Bảng 2.12 Đặc tả use case Thêm sản phẩm Đặc tả use case Sửa thông tin sản phẩm
Mô tả hoạt động diễn ra khi Quản trị viên sửa thông tin sản phẩm
Ca sử dụng Sửa thông tin sản phẩm
Mô tả Administrator sửa thông tin sản phẩm Điều kiện trước Administrator đã đăng nhập vào tài khoản của mình
Luồng sự kiện chính 1 Administrator click vào thêm sản phẩm và điền các thông tin cần thiết
2 Hệ thống kiểm tra thông tin sản phẩm được nhập vào, nếu hợp lệ thì thêm vào CSDL
Luồng sự kiện phụ 3 Nếu thiếu thông tin hoặc thông tin không hợp lệ thì không lưu vào CSDL và thông báo thông tin không hợp lệ
Bảng 2.13 Đặc tả use case Sửa thông tin sản phẩm Đặc tả use case Xóa sản phẩm
Mô tả hoạt động diễn ra khi Quản trị viên xoá sản phẩm
Ca sử dụng Xoá sản phẩm
Mô tả Administrator xóa sản phẩm Điều kiện trước Administrator đã đăng nhập vào tài khoản của mình
Luồng sự kiện chính 1 Administrator chọn sản phẩm cần xóa và xác nhận xóa
2 Hệ thống xoá sản phẩm khỏi CSDL
Bảng 2.14 Đặc tả use case Xoá sản phẩm Đặc tả use case Xóa thành viên
Mô tả hoạt động khi Quản trị viên xoá tài khoản thành viên
Ca sử dụng Xoá thành viên
Mô tả Administrator xóa thành viên Điều kiện trước Administrator đã đăng nhập vào tài khoản của mình
Luồng sự kiện chính 1 Administrator chọn tài khoản Customer cần xóa, click xóa và xác nhận xoá
2 Hệ thống xoá Customer khỏi CSDL
Bảng 2.15 Đặc tả use case Xoá thành viên
Biểu đồ hoạt động
Biểu đồ hoạt động Đăng nhập
Mô tả hoạt động của hệ thống khi người dùng đăng nhập
Hình 2.2 Biểu đồ hoạt động Đăng nhập Biểu đồ hoạt động Đăng xuất
Mô tả hoạt động của hệ thống khi người dùng đăng xuất
Hình 2.3 Biểu đồ hoạt động Đăng xuất
Biểu đồ hoạt động Đăng ký thành viên
Mô tả hoạt động của hệ thống khi người dùng đăng ký thành viên mới
Hình 2.4 Biểu đồ hoạt động Đăng ký thành viên
Biểu đồ hoạt động Xem thông tin sản phẩm
Mô tả hoạt động của hệ thống khi người dùng xem thông tin sản phẩm
Hình 2.5 Biểu đồ hoạt động Xem thông tin sản phẩm Biểu đồ hoạt động Thêm sản phẩm vào giỏ hàng
Mô tả hoạt động của hệ thống khi người dùng thêm sản phẩm vào giỏ hàng
Hình 2.6 Biểu đồ hoạt động Thêm sản phẩm vào giỏ hàng Biểu đồ hoạt động Đặt hàng
Mô tả hoạt động của hệ thống khi người dùng đặt hàng
Hình 2.7 Biểu đồ hoạt động Đặt hàng
Biểu đồ hoạt động Đổi mật khẩu
Mô tả hoạt động của hệ thống khi người dùng đổi mật khẩu
Hình 2.8 Biểu đồ hoạt động Đổi mật khẩu Biểu đồ hoạt động Thêm sản phẩm
Mô tả hoạt động của hệ thống khi Quản trị viên thêm mới sản phẩm
Hình 2.9 Biểu đồ hoạt động Thêm sản phẩm Biểu đồ hoạt động Sửa thông tin sản phẩm
Mô tả hoạt động của hệ thống khi Quản trị viên sửa thông tin sản phẩm
Hình 2.10 Biểu đồ hoạt động Sửa thông tin sản phẩm Biểu đồ hoạt động Xoá sản phẩm
Mô tả hoạt động của hệ thống khi Quản trị viên xoá sản phẩm
Hình 2.11 Biểu đồ hoạt động Xoá sản phẩm
Biểu đồ hoạt động xoá thành viên
Mô tả hoạt động của hệ thống khi Quản trị viên xoá tài khoản thành viên
Hình 2.12 Biểu đồ hoạt động xoá thành viên
Biểu đồ tuần tự
Biểu đồ tuần tự chức năng Đăng ký
Hình 2.13 Biểu đồ tuần tự chức năng Đăng ký Biểu đồ tuần tự chức năng Đăng nhập
Hình 2.14 Biểu đồ tuần tự chức năng Đăng nhập
Biểu đồ tuần tự chức năng Đổi mật khẩu
Hình 2.15 Biểu đồ tuần tự chức năng Đổi mật khẩu
Biểu đồ tuần tự chức năng Tìm kiếm sản phẩm
Hình 2.16 Biểu đồ tuần tự chức năng Tìm kiếm sản hẩm
Biểu đồ tuần tự chức năng Thêm mới sản phẩm
Hình 2.17 Biểu đồ tuần tự chức năng Thêm mới sản phẩm Biểu đồ tuần tự chức năng Sửa thông tin sản phẩm
Hình 2.18 Biểu đồ tuần tự chức năng Sửa thông tin sản phẩm
Biểu đồ tuần tự chức năng Xóa sản phẩm
Hình 2.19 Biểu đồ tuần tự chức năng Xoá sản phẩm
Cách tổ chức dữ liệu
Dùng để lưu thông tin về giỏ hàng của khách hàng
Tên Kiểu Null Chú thích
MaHD int(11) No Mã hoá đơn
MaSP int(11) No Mã sản phẩm
SoLuong int(11) No Số lượng
DonGia float(11) No Đơn giá
Bảng 2.16 Bảng chitiethoadon Bảng danhgia
Dùng để lưu các đánh giá của khách hàng về sản phẩm
Tên Kiểu Null Chú thích
MaSP int(11) No Mã sản phẩm
MaND varchar(10) No Mã người dùng
BinhLuan varchar(255) No Bình luận
NgayLap datetime No Ngày lập
Dùng để lưu thông tin về các hoá đơn
Tên Type Null Chú thích
MaHD int(11) No Mã hoá đơn
MaND int(11) No Mã người dùng
NgayLap datetime No Ngày lập
NguoiNhan varchar(50) No Người nhận
SDT varchar(50) No Số điện thoại
DiaChi varchar(100) No Địa chỉ
PhuongThucTT varchar(20) No Phương thức thanh toán
TongTien float No Tổng tiền
TrangThai varchar(70) No Trạng thái
Bảng 2.18 Bảng hoadon Bảng loaisanpham
Dùng để lưu các loại, hãng sản xuất sản phẩm
Tên Kiểu Null Chú thích
MaLSP int(11) No Mã loại sản phẩm
TenLSP varchar(70) No Tên loại sản phẩm
HinhAnh varchar(200) No Hình ảnh
MoTa varchar(200) No Mô tả
Bảng 2.19 Bảng loaisanpham Bảng khuyenmai
Dùng để lưu các chương trình khuyến mãi
Tên Kiểu Null Chú thích
MaHD int(11) No Mã hoá đơn
TenKM varchar(10) No Tên khuyến mãi
LoaiKM varchar(2) No loại khuyến mãi
GiaTriKM float No giá trị khuyến mãi
NgayBD datetime No ngày bắt đầu
NgayKT datetime No ngày kết thúc
Bảng 2.20 Bảng khuyenmai Bảng nguoidung
Dùng để lưu thông tin người dùng
Tên Type Null Chú thích
MaND int(11) No Mã người dùng
GioiTinh varchar(10) No Giới tính
SDT varchar(20) No Số điện thoại
DiaChi varchar(200) No Địa chỉ
TaiKhoan varchar(100) No Tài khoản( Username)
MatKhau varchar(100) No Mật khẩu( Password)
MaQuyen int(11) No Mã quyền
TrangThai int(11) No Trạng thái
Tên Type Null Chú thích
MaQuyen int(11) No Mã quyền
TenQuyen varchar(20) No Tên quyền
ChiTietQuyen varchar(255) No Chi tiết quyền
Bảng 2.22 Bảng phanquyen Bảng sanpham
Dùng để quản lý các sản phẩm
Tên Type Null Chú thích
MaSP int(11) No Mã sản phẩm
MaLSP int(11) No Mã loại sản phẩm
TenSP varchar(70) No Tên sản phẩm
DonGia int(10) No Đơn giá
SoLuong int(11) No Số lượng
HinhAnh varchar(200) No Hình ảnh
MaKM int(11) No Mã khuyến mãi
ManHinh varchar(50) No Màn hình
HDH varchar(50) No Hệ điều hành
CamSau varchar(50) No Cam sau
CamTruoc varchar(50) No Cam trước
Ram varchar(50) No Bộ nhớ RAM
Rom varchar(50) No Bộ nhớ ROM
SDCard varchar(50) No Thẻ nhớ
SoSao int(11) No Số sao
SoDanhGia int(11) No Số đánh giá
TrangThai int(11) No Trạng thái
Lược đồ chi tiết giữa các bảng
Hình 2.20 Lược đồ chi tiết giữa các bảng
3.1 Tổng quan về SQL INJECTION
Tổng quan SQL Injection
Việc thiết kế và đưa website vào hoạt động luôn đòi hỏi các nhà phát triển phải quan tâm đến vấn đề an toàn, bảo mật nhằm giảm thiểu tối đa khả năng bị tin tặc tấn công Thường các nhà phát triển tập trung vào các vấn đề an toàn của hệ điều hành, hệ quản trị CSDL, webserver … Tuy nhiên, có một nguy cơ tiềm ẩn ít được quan tâm đó là các đoạn mã của ứng dụng Một trong số đó là SQL Injection.
SQL Injection là một kỹ thuật chèn code được sử dụng trong tấn công các ứng dụng chứa dữ liệu (data-driven) Trong đó, các lệnh SQL độc hại được chèn vào trong một entry field để thực thi (chẳng hạn như để kết xuất nội dung Cơ sở dữ liệu cho hacker) SQL Injection phải khai thác lỗ hổng bảo mật trong phần mềm của ứng dụng.
SQL Injection chủ yếu được biết đến như một vector tấn công dành cho các trang web Nhưng nó cũng có thể được dùng để tấn công bất kỳ loại cơ sở dữ liệu SQL nào Các cuộc tấn công SQL Injection cho phép hacker giả mạo danh tính, xáo trộn dữ liệu Hay gây ra các vấn đề như làm mất hiệu lực giao dịch, thay đổi số dư, tiết lộ hay phá hủy dữ liệu trên hệ thống Thậm chí là làm dữ liệu không khả dụng hoặc trở thành admin của server cơ sở dữ liệu.
1.1.1 Tác hại của SQL Injection
Khi một ứng dụng web bị tấn công SQL Injection, hậu quả để lại là vô cùng lớn: Đọc được dữ liệu không được phép truy nhập trong CSDL: Kẻ tấn công có thể đọc được những dữ liệu quan trọng trong cơ sở dữ liệu như thông tin về tài khoản user (bao gồm cả email, password, thông tin về thẻ ngân hàng , ); các thông tin về tài khoản người quản trị admin, thông tin về server,
Sửa đổi trái phép: Trong kỹ thuật tấn công SQL Injection, thông qua việc chèn các câu lệnh như insert, update, delete, vào các câu lệnh truy vấn cơ sở dữ liệu, kẻ tấn công có thể thực hiện việc thêm, sửa, xóa các trường trong cơ sở dữ liệu một cách tùy ý mà không cần bất cứ một quyền nào cả.
Ngoài ra , kẻ tấn công có thể lợi dụng để đăng nhập với quyền admin để thực hiện việc sửa đổi cơ sở dữ liệu một cách hợp pháp.
Thực hiện mã tấn công từ xa: Ngoài việc chèn vào các câu lệnh truy vấn vào cơ sở dữ liệu, kẻ tấn công có thể chèn vào các đoạn mã script nguy hiểm , phục vụ cho các mục đích tấn công khác, tấn công từ xa vào hệ thống ứng dụng web
Một nghiên cứu từ Imperva Web Application Attack Report (WAAR) xuất bản tháng 2/2020 chỉ ra : 29% ứng dụng web vẫn chịu tấn công từ SQL Injection.
Hình 3.21 Top 10 lỗ hổng phổ biến nhất theo OWASP (theo % ứng dụng web) năm 2019
3.2.Cách tấn công và phòng tránh SQL Injection
Tùy vào mức độ tinh vi, SQL Injection có thể cho phép kẻ tấn công:
● Vượt qua các khâu xác thực người dùng
● Chèn, xóa hoặc sửa đổi dữ liệu
● Đánh cắp các thông tin trong CSDL
● Chiếm quyền điều khiển hệ thống
Cách thức tấn công của SQL Injection thông thường nhất gồm: vượt qua kiểm tra đăng nhập, sử dụng câu lệnh SELECT, sử dụng câu lệnh INSERT, sử dụng các stored procedures.
Dạng tấn công vượt qua kiểm tra đăng nhập
Với dạng tấn công này, kẻ tấn công có thể dễ dàng vượt qua các trang đăng nhập nhờ vào lỗi khi dùng các câu lệnh SQL thao tác trên cơ sở dữ liệu của ứng dụng web Thông thường để cho phép người dùng truy cập vào các trang web được bảo mật, hệ thống thường xây dựng trang đăng nhập để yêu cầu người dùng nhập thông tin về tên đăng nhập và mật khẩu Sau khi người dùng nhập thông tin vào, hệ thống sẽ kiểm tra tên đăng nhập và mật khẩu có hợp lệ hay không để quyết định cho phép hay từ chối thực hiện tiếp Ví dụ như với một form login như dưới đây Thử submit các field username, password hoặc field id, bằng hi' or 1=1 Nếu thành công, thì có thể login vào mà không cần phải biết username và password.
Hình 3.22 SQL Injection vượt qua đăng nhập
- Nhập vào ô email với nội dụng: Abc123' OR 1 = 1 LIMIT 1 ' ]
- Nhập vào ô password với nội dụng bất kỳ, sau đó click vào nút Login.
Chúng ta có thể đăng nhập thành công Nguyên nhân chúng ta có thể dễ dàng đăng nhập vào hệ thống mà thậm chí chúng ta không có thông tin đăng nhập là vì khi đăng nhập hệ thống, chương trình sẽ tự động tạo ra cậu lệnh truy vấn dữ liệu với tham số được truyền vào từ form login:
$sql = "SELECT * FROM nguoidung WHERE TaiKhoan='$taikhoan' AND
Với dữ liệu chúng ta vừa nhập, câu lệnh truy vấn sẽ là:
$sql = "SELECT * FROM nguoidung WHERE TaiKhoan='Abc123' OR 1 = 1 LIMIT 1 ' ]' AND MatKhau='$matkhau'";
Sau kí tự “–“, hệ thống sẽ hiểu đó là comment, chương trình sẽ không thực thi những gì phía sau nó Câu truy vấn có thể rút gọn lại:
$sql = "SELECT * FROM nguoidung WHERE TaiKhoan='Abc123' OR 1 = 1 LIMIT 1 Điều kiện của câu lệnh truy vấn: TaiKhoan= Abc123' OR 1 = 1, nó luôn là true, ' đó là lý do vì sao chúng ta có thể vượt qua màn hình đăng nhập một cách dễ dàng Ví dụ này mô tả cho dạng tấn công vượt qua kiểm tra lúc đăng nhập.
Dạng tấn công sử dụng câu lệnh SELECT
Dạng tấn công này phức tạp hơn Để thực hiện được kiểu tấn công này, kẻ tấn công phải có khả năng hiểu và lợi dụng các sơ hở trong các thông báo lỗi từ hệ thống để dò tìm các điểm yếu khởi đầu cho việc tấn công Chúng ta có tể gặp các website tin tức có các tham số được truyền vào như: index.php?id! , index.asp?id=6, thì chúng ta chỉ cần thêm các kí tự dấu nháy đơn ('), dấu nháy kép ("), phần trăm 27 (%27), 00 phần trăm (00%) vào sau id để kiểm tra nếu nó hiện ra lỗi hoặc không hiện ra 1 cái gì (khác hoàn toàn với lúc ban đầu thì 90% có khả năng khai thác được lỗi này) Ví dụ http://www.ampak.com.tw/product.php?id" là một website bị lỗi SQL Injection thì chúng ta sẽ thử với http://www.ampak.com.tw/product.php?id"' hoặc http://www.ampak.com.tw/product.php?id"' thì đều trả về trang lỗi Trong các tình huống thông thường, URL hiển thị nội dung của tin có ID trùng với ID đã chỉ định và hầu như không thấy có lỗi Tuy nhiên, giống như ví dụ đăng nhập ở trước, đoạn mã này để lộ sơ hở cho một lỗi SQL injection khác Kẻ tấn công có thể thay thế một ID hợp lệ bằng cách gán ID cho một giá trị khác, và từ đó bắt đầu cho một cuộc tấn công bất hợp pháp, ví dụ như: 0 OR 1=1 (nghĩa là http://www.ampak.com.tw/product.php? id=0 or 1=1) Câu truy vấn SQL lúc này sẽ không trả về trang lỗi mặc dù chúng ta không có sản phẩm nào có ID = 0, vì nó sẽ thực hiện câu lệnh:
SELECT * FROM Products WHERE Product_ID=0 or 1=1
Tương tự như trên, kẻ tấn công có thể lợi dụng sơ hở trong câu truy vấn SQL để nhập thêm lệnh tiếp theo: DROP TABLE users Lúc này, chương trình sẽ chạy câu truy vấn thực hiện việc xóa bảng users.
● Dạng tấn công sử dụng câu lệnh INSERT
Thông thường các ứng dụng web cho phép người dùng đăng kí một tài khoản để tham gia Chức năng không thể thiếu là sau khi đăng kí thành công, người dùng có thể xem và hiệu chỉnh thông tin của mình SQL injection có thể được dùng khi hệ thống không kiểm tra tính hợp lệ của thông tin nhập vào Ví dụ, một câu lệnh INSERT có thể có cú pháp dạng:INSERT INTO TableName VALUES('1st Value', '2nd Value', '3rd Value') Thì chắc chắn sẽ bị lỗi Sql Injection, bởi vì nếu ta nhập vào trường thứ nhất ví dụ như: ' + (SELECT TOP 1 FieldName FROM TableName) + ' Lúc này câu truy vấn sẽ là:
INSERT INTO TableName VALUES(' ' + (SELECT TOP 1 FieldName FROM TableName) + ' ', 'abc', 'def')
Khi đó, lúc thực hiện lệnh xem thông tin, xem như chúng ta đã yêu cầu thực hiện thêm một lệnh nữa đó là:
SELECT TOP 1 FieldName FROM TableName
● Dạng tấn công sử dụng stored-procedures
Stored Procedure được sử dụng trong lập trình web với mục đích nhằm giảm sự phức tạp trong ứng dụng và tránh sự tấn công trong kỹ thuật SQL Injection Tuy nhiên những kẻ tấn công vẫn có thể lợi dụng những stored procedure để tấn công vào hệ thống Việc tấn công này sẽ gây tác hại rất lớn nếu ứng dụng được thực thi với quyền quản trị hệ thống ‘sa’ Ví dụ 1: stored procedure splogin gồm hai tham số là username và password, nếu kẻ tấn công nhập: Username: thanhcong, Password: ' ; shutdown- -
Lệnh gọi stored procedure như sau: EXEC splogin 'thanhcong','';shutdown- -' Lệnh shutdown thực hiện dừng sql server ngay lập tức Ví dụ 2: Hoặc EXEC xp_cmdshell
'cmd.exe dir C: ' Lúc này hệ thống sẽ thực hiện lệnh liệt kê thư mục trên ổ đĩa C:\ cài đặt server Việc phá hoại kiểu nào tuỳ thuộc vào câu lệnh đằng sau cmd.exe.
● Luôn kiểm tra kỹ các trường nhập dữ liệu và các bạn cần ràng buộc thật kỹ dữ liệu người dùng nhập vào.
Cách tấn công và phòng tránh SQL Injection
Tùy vào mức độ tinh vi, SQL Injection có thể cho phép kẻ tấn công:
● Vượt qua các khâu xác thực người dùng
● Chèn, xóa hoặc sửa đổi dữ liệu
● Đánh cắp các thông tin trong CSDL
● Chiếm quyền điều khiển hệ thống
Cách thức tấn công của SQL Injection thông thường nhất gồm: vượt qua kiểm tra đăng nhập, sử dụng câu lệnh SELECT, sử dụng câu lệnh INSERT, sử dụng các stored procedures.
Dạng tấn công vượt qua kiểm tra đăng nhập
Với dạng tấn công này, kẻ tấn công có thể dễ dàng vượt qua các trang đăng nhập nhờ vào lỗi khi dùng các câu lệnh SQL thao tác trên cơ sở dữ liệu của ứng dụng web Thông thường để cho phép người dùng truy cập vào các trang web được bảo mật, hệ thống thường xây dựng trang đăng nhập để yêu cầu người dùng nhập thông tin về tên đăng nhập và mật khẩu Sau khi người dùng nhập thông tin vào, hệ thống sẽ kiểm tra tên đăng nhập và mật khẩu có hợp lệ hay không để quyết định cho phép hay từ chối thực hiện tiếp Ví dụ như với một form login như dưới đây Thử submit các field username, password hoặc field id, bằng hi' or 1=1 Nếu thành công, thì có thể login vào mà không cần phải biết username và password.
Hình 3.22 SQL Injection vượt qua đăng nhập
- Nhập vào ô email với nội dụng: Abc123' OR 1 = 1 LIMIT 1 ' ]
- Nhập vào ô password với nội dụng bất kỳ, sau đó click vào nút Login.
Chúng ta có thể đăng nhập thành công Nguyên nhân chúng ta có thể dễ dàng đăng nhập vào hệ thống mà thậm chí chúng ta không có thông tin đăng nhập là vì khi đăng nhập hệ thống, chương trình sẽ tự động tạo ra cậu lệnh truy vấn dữ liệu với tham số được truyền vào từ form login:
$sql = "SELECT * FROM nguoidung WHERE TaiKhoan='$taikhoan' AND
Với dữ liệu chúng ta vừa nhập, câu lệnh truy vấn sẽ là:
$sql = "SELECT * FROM nguoidung WHERE TaiKhoan='Abc123' OR 1 = 1 LIMIT 1 ' ]' AND MatKhau='$matkhau'";
Sau kí tự “–“, hệ thống sẽ hiểu đó là comment, chương trình sẽ không thực thi những gì phía sau nó Câu truy vấn có thể rút gọn lại:
$sql = "SELECT * FROM nguoidung WHERE TaiKhoan='Abc123' OR 1 = 1 LIMIT 1 Điều kiện của câu lệnh truy vấn: TaiKhoan= Abc123' OR 1 = 1, nó luôn là true, ' đó là lý do vì sao chúng ta có thể vượt qua màn hình đăng nhập một cách dễ dàng Ví dụ này mô tả cho dạng tấn công vượt qua kiểm tra lúc đăng nhập.
Dạng tấn công sử dụng câu lệnh SELECT
Dạng tấn công này phức tạp hơn Để thực hiện được kiểu tấn công này, kẻ tấn công phải có khả năng hiểu và lợi dụng các sơ hở trong các thông báo lỗi từ hệ thống để dò tìm các điểm yếu khởi đầu cho việc tấn công Chúng ta có tể gặp các website tin tức có các tham số được truyền vào như: index.php?id! , index.asp?id=6, thì chúng ta chỉ cần thêm các kí tự dấu nháy đơn ('), dấu nháy kép ("), phần trăm 27 (%27), 00 phần trăm (00%) vào sau id để kiểm tra nếu nó hiện ra lỗi hoặc không hiện ra 1 cái gì (khác hoàn toàn với lúc ban đầu thì 90% có khả năng khai thác được lỗi này) Ví dụ http://www.ampak.com.tw/product.php?id" là một website bị lỗi SQL Injection thì chúng ta sẽ thử với http://www.ampak.com.tw/product.php?id"' hoặc http://www.ampak.com.tw/product.php?id"' thì đều trả về trang lỗi Trong các tình huống thông thường, URL hiển thị nội dung của tin có ID trùng với ID đã chỉ định và hầu như không thấy có lỗi Tuy nhiên, giống như ví dụ đăng nhập ở trước, đoạn mã này để lộ sơ hở cho một lỗi SQL injection khác Kẻ tấn công có thể thay thế một ID hợp lệ bằng cách gán ID cho một giá trị khác, và từ đó bắt đầu cho một cuộc tấn công bất hợp pháp, ví dụ như: 0 OR 1=1 (nghĩa là http://www.ampak.com.tw/product.php? id=0 or 1=1) Câu truy vấn SQL lúc này sẽ không trả về trang lỗi mặc dù chúng ta không có sản phẩm nào có ID = 0, vì nó sẽ thực hiện câu lệnh:
SELECT * FROM Products WHERE Product_ID=0 or 1=1
Tương tự như trên, kẻ tấn công có thể lợi dụng sơ hở trong câu truy vấn SQL để nhập thêm lệnh tiếp theo: DROP TABLE users Lúc này, chương trình sẽ chạy câu truy vấn thực hiện việc xóa bảng users.
● Dạng tấn công sử dụng câu lệnh INSERT
Thông thường các ứng dụng web cho phép người dùng đăng kí một tài khoản để tham gia Chức năng không thể thiếu là sau khi đăng kí thành công, người dùng có thể xem và hiệu chỉnh thông tin của mình SQL injection có thể được dùng khi hệ thống không kiểm tra tính hợp lệ của thông tin nhập vào Ví dụ, một câu lệnh INSERT có thể có cú pháp dạng:INSERT INTO TableName VALUES('1st Value', '2nd Value', '3rd Value') Thì chắc chắn sẽ bị lỗi Sql Injection, bởi vì nếu ta nhập vào trường thứ nhất ví dụ như: ' + (SELECT TOP 1 FieldName FROM TableName) + ' Lúc này câu truy vấn sẽ là:
INSERT INTO TableName VALUES(' ' + (SELECT TOP 1 FieldName FROM TableName) + ' ', 'abc', 'def')
Khi đó, lúc thực hiện lệnh xem thông tin, xem như chúng ta đã yêu cầu thực hiện thêm một lệnh nữa đó là:
SELECT TOP 1 FieldName FROM TableName
● Dạng tấn công sử dụng stored-procedures
Stored Procedure được sử dụng trong lập trình web với mục đích nhằm giảm sự phức tạp trong ứng dụng và tránh sự tấn công trong kỹ thuật SQL Injection Tuy nhiên những kẻ tấn công vẫn có thể lợi dụng những stored procedure để tấn công vào hệ thống Việc tấn công này sẽ gây tác hại rất lớn nếu ứng dụng được thực thi với quyền quản trị hệ thống ‘sa’ Ví dụ 1: stored procedure splogin gồm hai tham số là username và password, nếu kẻ tấn công nhập: Username: thanhcong, Password: ' ; shutdown- -
Lệnh gọi stored procedure như sau: EXEC splogin 'thanhcong','';shutdown- -' Lệnh shutdown thực hiện dừng sql server ngay lập tức Ví dụ 2: Hoặc EXEC xp_cmdshell
'cmd.exe dir C: ' Lúc này hệ thống sẽ thực hiện lệnh liệt kê thư mục trên ổ đĩa C:\ cài đặt server Việc phá hoại kiểu nào tuỳ thuộc vào câu lệnh đằng sau cmd.exe.
● Luôn kiểm tra kỹ các trường nhập dữ liệu và các bạn cần ràng buộc thật kỹ dữ liệu người dùng nhập vào.
● Dùng các hàm có sẵn để giảm thiểu lỗi Mỗi khi truy vấn thì mọi người nên sử dụng thêm hàm“ mysqli_real_escape_string” để chuyển đổi một chuỗi thành một query an toàn.
● Chúng ta nên dùng các Framework và hạn chế dùng code thuần tối đa nếu có thể Framework luôn có cộng đồng hoặc các chuyên gia bảo mật giúp tìm lỗi và update liên tục, từ đó chúng ta có thể giảm bớt thời gian xử lý lỗi để tăng thời gian làm sản phẩm cũng là một điều hay.
Áp dụng vào hệ thống
$taikhoan = mysqli_escape_string($db-> conn, $taikhoan);
$matkhau = mysqli_escape_string($db-> conn, $matkhau);
Sử dụng lệnh mysqli_escape_string để xóa các kí tự đặc biệt và trả về string, ngăn chặn việc sử dụng các kí tự trong lệnh truy vấn khi đăng nhập.
$value_list = “,’” mysqli_escape_string($this-> conn, $value) “’”; foreach ($data as $key => $value) {
$sql = “$key” = ‘” mysqli_escape_string($this-> conn, $value) “’,”; }
Sử dụng lệnh mysqli_escape_string để trả về string khi thêm/ thay đổi thông tin, ngăn chặn việc chèn thêm câu lệnh SQL.
SẢN PHẨM THỰC NGHIỆM
Trang chủ
Hình 4.23 Giao diện trang chủ
Trang chủ “Index.php”: Là trang chính, chứa tất cả các mục để lựa chọn Từ trang chủ khách hàng có thể tìm thấy mọi thông tin cần thiết:
- Thông tin về các loại sản phẩm với giao diện gần gũi, thân thiện và dễ sử dụng từ đó khách hàng có thể đặt mua cho mình những sản phẩm yêu thích, phù hợp với nhu cầu khách hàng
- Xem những bài viết, tin tức mới về những sản phẩm
- Xem thông tin tuyển dụng
- Xem thông tin giới thiệu trang web
- Bạn có thể gửi những thắc mắc, góp ý hoặc liên hệ với quản trị viên
Đăng nhập, đăng ký tài khoản người dùng
4.2.1 Giao diện form đăng nhập
Hình 4.24 Giao diện form đăng nhập
Trong trang chủ khách hàng ấn vào tài khoản để nhập Tên đăng nhập và Mật khẩu của mình để đăng nhập vào website, nếu chưa có tài khoản khách hàng nhấn vào nút Đăng ký để tạo cho mình một tài khoản mới
4.2.2 Giao diện form đăng ký
Hình 4.25 Giao diện form đăng ký
Trong form đăng ký khách hàng phải nhập đầy đủ thông tin cần thiết để có thể tạo một tài khoản mới đăng nhập website
Quá trình mua hàng
Hình 4.26 Giao diện giỏ hàng
Trang giỏ hàng là trang mà khách hàng có thể xem được những sản phẩm của mình đã chọn Tại đây khách hàng có thể biết được số lượng mặt hàng mình đã chọn cũng như tổng số tiền phải thanh toán Khách hàng có thể thêm, cập nhập cũng như xóa sản phẩm ngay tại giỏ hàng.
4.3.2 Giao diện trang chi tiết sản phẩm
Hình 4.27 Giao diện trang chi tiết sản phẩm
Trang chi tiết sản phẩm là trang hiển thị thông tin chi tiết về sản phẩm: giá, bảo hành, thông số kỹ thuật…giúp cho khách hàng có cái nhìn tổng quan về sản phẩm Là cơ sở để khách hàng có quyết định mua sản phẩm hay không
Quản trị
Hình 4.28 Giao diện form đăng nhập admin
Trang đăng nhập Admin để khi có người muốn vào trang quản lý thì cần phải đăng nhập mới quản lý được.
Hình 4.29 Giao diện trang quản lý sản phẩm
Sau khi đăng nhập được vào giao diện trang quản lý sản phẩm thì Admin có thể thêm, sửa, xóa sản phẩm
Hình 4.30 Giao diện trang quản lý đơn hàng
Giao diện trang quản lý đơn hàng khi khách hàng gửi đơn hàng thì nó sẽ được hiển thị và Admin sẽ xử lý đơn hàng này.
Hình 4.31 Giao diện trang quản lý khách hàng
Giao diện trang quản lý khách hàng sẽ cho người quản lý thêm, xóa và phân quyền cho khách hàng.
1.1.4 Thống kê sản phẩm bán ra
Hình 4.32 Giao diện trang thống kê sản phẩm bán ra
Giao diện trang thống kê sản phẩm bán ra sẽ cho người quản lý biết thêm về số lượng và so sánh những loại sản phẩm được bán ra.