6.1.Thuật toán MD5:
MD để chỉ cho “message digest” (Lấy 2 chữđầu). MD5 là một thuật tóan lấy một tín hiệu vào có chiều dài bất kỳ và đưa ra một tín hiệu digest có chiều dài cốđịnh (128-bit, 32 ký tự hexa), được làm ra từ 1 giá trị hexa (chú ý : mỗi ký tự
hex là 4 bit, do đó 128bit là 32 ký tự hex). Nói rõ hơn một chút : MD5 là cách căn bản để lấy chùm ký tự ( là digits, alphabeic hay gì khác ), được gọi là string nhập vào, và thay đổi chúng thành một chùm ký tự dài 32 ký tự , được gọi là tín hiệu digest (message digest) hay hashes của chuỗi được nhập vào, chuỗi 32 ký tự này
được tạo ra từ các ký tự hexa ( những digits: 0-9 và các chữ a-f). Điều này có nghĩa là, với một chuỗi nhập vào có chiều dài bất kỳ , MD5 sẽ luôn luôn cài đặt “một vài thứ” để thành một chuổi string dài 32 ký tự, mà các ký tự là các ký tự
hexa. Tín hiệu digest sẽ không có khỏang trống, hay dấu hoặc kép hay bất cứ thứ
gì khác 0-9 và a-f trong tín hiệu hashes được xuất ra.
MD5 hashes có tiện dụng là những hashes tạo ra trông khác nhau hòan tòan từ những tín hiệu nhập vào hơi hơi giống nhau. Ví dụ sau sẽ làm rõ hơn vềđiều này:
• Kết quả MD5 hash của chuỗi jim là 5e027396789a18c37aeda616e3d7991b • Kết quả MD5 hash của chuỗi Jim là d54b3c8fcd5ba07e47b400e69a287966 • Kết quả MD5 hash của chuỗi Jimmy là 495b3121d23f5988b133882b36aa7214
N hưđã thấy, có ba tín hiệu nhập vào “hơi hơi giống nhau” nhưng các tín hiệu MD5 hashes xuất ra hòan tòan khác nhau. Ví dụ này cũng chứng minh hai ký tự j và J là 2 ký tự khác nhau. Ởđây cần chú ý thêm là trong ví dụ thứ 3 chỉ thêm vào 2 ký tự (my) ở cuối chuỗi của ví dụ 2 , và hashes của nó đã thay đổi hòan tòan. Vì vậy chúng ta không thể có hashes của chuỗi “Blehlo” từ hashes của chuỗi “Bleh” bằng cách “vá viếu” thêm vài ký tự - thay đổi trong chuỗi nhập vào thì tín hiệu hashes của nó cũng sẽ thay đổi hòan tòan.
Và ởđây cũng nên chú ý với 3 chuỗi nhập vào có chiều dài không giống nhau nhưng các hash sinh ra đều có chiều dài là 32 ký tự (bao gồm các số 0-9 và a-f), ở ví dụ sau cùng ta cũng thấy chuỗi nhập vào dài hơn 2 ký tự so với 2 string trước nhưng chuỗi hash của nó cũng chỉ có 32 ký tự chữ số hex.
Điều quan trọng là chúng ta không thể dịch ngược chuỗi MD5 đã hash về lại chuỗi ban đầu được. Em sẽứng dụng điều này để mã hóa mật khNu khi đăng nhập vào hệ thống.
6.2.Stored Procedure:
Stored Procedure có một sốưu điểm chính như sau:
Performance (hiệu năng) : Khi thực thi một câu lệnh SQL thì SQL Server phải kiểm tra quyền (permission) xem user gởi câu lệnh đó có được phép thực hiện câu lệnh hay không đồng thời kiểm tra cú pháp rồi mới tạo ra một execute plan và thực thi. Nếu có nhiều câu lệnh như vậy gởi qua mạng có thể làm giảm đi tốc độ
làm việc của server. SQL Server sẽ làm việc hiệu quả hơn nếu dùng stored procedure vì người gởi chỉ gởi một câu lệnh đơn và SQL Server chỉ kiểm tra một lần sau đó tạo ra một execute plan và thực thi. Nếu stored procedure được gọi nhiều lần thì execute plan có thểđược sử dụng lại nên sẽ làm việc nhanh hơn. N goài ra cú pháp của các câu lệnh SQL đã được SQL Sever kiểm tra trước khi lưu nên nó không cần kiểm lại khi thực thi.
Reuse (tái sử dụng) : Một khi stored procedure được tạo ra nó có thểđược sử dụng lại. Ðiều này sẽ làm cho việc bảo trì (maintainability) dễ dàng hơn do việc tách rời giữa business rules (tức là những logic thể hiện bên trong stored
procedure) và database. Ví dụ nếu có một sự thay đổi nào đó về mặt logic thì ta chỉ
việc thay đổi mã lệnh bên trong stored procedure mà thôi. N hững ứng dụng dùng stored procedure này có thể sẽ không cần phải thay đổi mà vẫn tương thích với business rule mới. Cũng giống như các ngôn ngữ lập trình khác stored procedure cho phép ta đưa vào các input parameters (tham số) và trả về các output parameters
Security (bảo mật) : Giả sử chúng ta muốn giới hạn việc truy xuất dữ liệu trực tiếp của một user nào đó vào một số bảng, ta có thể viết một stored procedure
để truy xuất dữ liệu và chỉ cho phép user đó được sử dụng stored procedure đã viết sẵn mà thôi chứ không thể "đụng" đến các bảng đó một cách trực tiếp. Ngoài ra stored procedure có thểđược mã hóa (encrypt) để tăng cường tính bảo mật.
Ðể tạo ra một stored procedure ta dùng lệnh CREATE PROCEDURE theo sau là tên của nó. Nếu muốn encrypt thì dùng WITH ENCRYPTION trước chữ AS và các tham số nhập vào(input) hoặc tham số trả về (output). Nếu là output thì thêm keyword OUTPUT đằng sau tham số. Ta có thể cho giá trị mặc định (default) cùng lúc với khai báo kiểu dữ liệu của tham số. Kể từ sau chữ AS là phần thân của stored procedure.
CHƯƠNG 3: Giải Quyết Bài Toán 1. Mô hình hệ thống:
1.1.Mô hình chức năng dành cho người dùng:
Mô hình chức năng dành cho Quản trị và Duyệt đơn hàng:
1.2.Mô hình thự thể kết hợp - Entities Relation Diagram (ERD):
1.3.Mô hình quan hệ - Relationship Diagram:
1.4.Cấu trúc các bảng:
1.4..1. Bảng Slideshow (giới thiệu):
Tên cột Kiểu dữ liệu Cho phép rỗng Mô tả Ghi chú
SlideID Int Không Tự tăng +1 Khóa chính
Image_ID Nvarchar (50) Không Tham chiếu từ
bảng Images Khóa ngoại Priority Int Có Thứ tự xuất hiện của ảnh 1: là xuất hiện đầu tiên 1.4..2. Bảng Images (hình ảnh):
Tên cột Kiểu dữ liệu Cho phép rỗng Mô tả Ghi chú
Image_ID Nvarchar (50) Không Tên đại diện Khóa chính
Path Nvarchar (50) Có Tên thật của ảnh
1.4..3. Bảng Events (sự kiện):
Tên cột Kiểu dữ liệu Cho phép rỗng Mô tả Ghi chú
Event_ID Int Không Tự tăng +1 Khóa chính
Intro Nvarchar (500) Không Mô tả ngắn gọn sự kiện Detail Nvarchar (1000) Không Mô tảđầy đủ sự kiện
Image_ID Nvarchar(50) Không Tham chiếu từ bảng Image Khóa ngoại
Date_from Varchar(50) Không Ngày bắt đầu
Date_to Varchar(50) Không Ngày kết thúc
HomePage int Có Cho phép hiện lên trang chủ 1: hiện 0: Nn
1.4..4. Bảng MainMenu (thực đơn):
Tên cột Kiểu dữ liệu Cho phép rỗng Mô tả Ghi chú MainMenu_ID Int Không Tự tăng +1 Khóa chính
Name Nvarchar (50) Không Tên thực đơn
Priority Int Có Thứ tự xuất hiện của thực đơn
1: là xuất hiện
đầu tiên
1.4..5. Bảng SubMenu (thực đơn con):
Tên cột Kiểu dữ liệu Cho phép rỗng Mô tả Ghi chú SubMenu_ID Int Không Tự tăng +1 Khóa chính
Name Nvarchar (50) Không Tên thực đơn
Priority Int Có Thứ tự xuất hiện của thực đơn con
1: là xuất hiện
đầu tiên MainMenu_ID Int Không Tham chiếu từ
bảng MainMenu
Khóa ngoại
1.4..6. Bảng Users (tài khoản):
Tên cột Kiểu dữ liệu Cho phép rỗng Mô tả Ghi chú UserID Nvarchar (50) Không Tên đăng nhập Khóa chính
Password Nvarchar (50) Không Mật khNu
Role Int Không Quyền người
dùng trên trang web
0: khách hàng 1: quản trị
2: duyệt đơn hàng Email Nvarchar (50) Có Địa chỉ email
Fullname Nvarchar (50) Không Tên họđầy đủ
CellPhone varchar (20) Có Di động Sex Nvarchar (50) Có Giới tính
Banned Int Có Khóa tài khoản 0: bình thường 1: khóa
1.4..7. Bảng Feedback (phản hồi):
Tên cột Kiểu dữ liệu Cho phép rỗng Mô tả Ghi chú
Fb_ID Int Không Tự tăng +1 Khóa chính
Present Nvarchar (10) Có Cách trình bày Serve Nvarchar (10) Có Thái độ phục vụ
Price Nvarchar (10) Có Giá tốt chưa Delicious Nvarchar (10) Có Món ăn ngon không
SpaceIn Nvarchar (10) Có Không gian nhà hàng
Month varchar (10) Có Tháng
Year varchar (10) Có Năm
1.4..8. Bảng Items (món ăn):
Tên cột Kiểu dữ liệu Cho phép rỗng Mô tả Ghi chú Item_ID Int Không Tự tăng +1 Khóa chính Item_name Nvarchar (50) Không Tê món
Recipe Nvarchar (1000)
Có Thành phần
Image_ID Nvarchar (50) Không Tham chiếu từ bảng Images Khóa ngoại Item_usage Nvarchar (2000) Có Công dụng, cách dùng
SubMenu
Price varchar (30) Có Giá
Origin Nvarchar (50) Có Vùng
HomePage Int Có Hiện lên trang chủ 1: hiện 0: Nn
Invisible Int Có Ẩn món 0: hiện
1: Nn
1.4..9. Bảng BookDetail (chi tiết đơn hàng):
Tên cột Kiểu dữ liệu Cho phép rỗng Mô tả Ghi chú BookDetail_ID Int Không Tự tăng +1 Khóa chính
BookID Int Không Tham chiếu từ bảng Booked
Khóa ngoại Item_ID Int Không Tham chiếu từ bảng
Items
Khóa ngoại Quantity_Item Int Không Số lượng mỗi món
1.4..10. Bảng Booked (đặt hàng): Tên cột Kiểu dữ liệu Cho phép rỗng Mô tả Ghi chú
BookID Int Không Tự tăng +1 Khóa chính UserID Nvarchar
(50)
Không Tham chiếu từ bảng Users
Book_time varchar (30)
Không Giờ khách đến Book_date Datetime Không Ngày khách đến
N ote Nvarchar (1000) Có Ghi chú Guest_name Nvarchar (50) Có Tên khách đến Guest_phone Nvarchar (50) Có Điện thoại khách đến Guest_Email Nvarchar (50) Có Di động khách đến 1: hiện 0: Nn Status_View varchar (50)
Có Trạng thái đơn hàng New: chưa duyệt Accepted: đồng ý Waitting: chờ xử lý Deny: không chấp nhận
2. Cấu trúc chương trình:
2.1.Người dùng:
2.1..1. Đăng nhập:
2.1..2. Sửa thông tin tài khoản:
2.1..3. Đổi mật khNu:
Hình III-2-1-3: Sơđồ xử lý người dùng đổi mật khNu
2.1..4. Quên mật khNu:
2.1..5. Xem giới thiệu:
Hình III-2-1-5: Sơđồ xử lý người dùng xem giới thiệu
2.1..6. Xem trang chủ:
2.1..7. Xem món ăn:
2.1..8. Đặt hàng:
Hình III-2-1-8: Sơđồ xử lý người dùng đặt món ăn
2.1..9. Xem sự kiện:
2.1..10. Gửi phản hồi:
2.2.Quản trị & người duyệt đơn hàng:
2.2..1. Đăng nhập:
2.2..2. Quản lý SlideShow (giới thiệu):
• Xem:
Hình III-2-2-2-1: Sơ đồ xử lý admin xem giới thiệu • Thêm:
• Xóa:
Hình III-2-2-2-3: Sơđồ xử lý admin xóa giới thiệu • Sửa:
2.2..3. Quản lý Accounts (tài khoản): • Ban (khóa tài khoản):
Hình III-2-2-3-1: Sơđồ xử lý admin khóa tài khoản • Grant (cấp quyền duyệt đơn hàng):
• ChangePass (đổi mật khNu):
Hình III-2-2-3-3: Sơ đồ xử lý Admin/Reviewer đổi mật khNu
2.2..4. Quản lý Events (sự kiện):
• Xem:
• Thêm:
Hình III-2-2-4-2: Sơđồ xử lý admin thêm sự kiện • Xóa:
• Sửa:
2.2..5. Quản lý Menu (thực đơn):
• Xem:
Hình III-2-2-5-1: Sơđồ xử lý admin xem thực đơn • Thêm:
• Xóa:
Hình III-2-2-5-3: Sơđồ xử lý admin xóa thực đơn • Sửa:
2.2..6. Quản lý Submenu (thực đơn con):
• Xem:
Hình III-2-2-6-1: Sơđồ xử lý admin xem thực đơn con • Thêm:
• Xóa:
Hình III-2-2-6-3: Sơ đồ xử lý admin xóa thực đơn con • Sửa:
2.2..7. Quản lý Items (món ăn):
• Xem:
Hình III-2-2-7-1: Sơđồ xử lý admin xem món ăn • Thêm:
• Xóa:
Hình III-2-2-7-3: Sơđồ xử lý admin xóa món ăn • Sửa:
2.2..8. Quản lý Feedback (xem phản hồi):
2.2..9. Quản lý Book (duyệt đơn hàng):
Hình III-2-2-9: Sơ đồ xử lý reviewer xử lý đơn hàng
2.2..10. Quản lý Images (hình ảnh):
• Xem:
• Thêm:
Hình III-2-2-10-2: Sơđồ xử lý admin thêm hình ảnh • Xóa:
• Sửa:
Hình III-2-2-10-4: Sơđồ xử lý admin sửa hình ảnh
3. Các đoạn mã quan trọng:
3.1.Flex:
3.1..1. Tạo HTTPService gửi tham số:
3.2.ASP.NET
3.2..1. N hận tham số & trả kết quả cho Flex:
3.2..3. Tạo Connection theo cơ chế Singleton:
3.3.SQLServer 2000:
CHƯƠNG 4: Kết Quả Thực Hiện 1. Cài đặt: 1.1.Yêu cầu hệ thống: Số tt Thành phần Mô tả 1 Hệđiều hành Windows 2000, XP, 2003, Vista 2 Cơ sở dữ liệu SQL Server 2000
3 Web server Internet Information Service 5.0 hoặc cao hơn 4 Trình duyệt Internet Explorer 7.x or Firefox 2.x hoặc cao
hơn
5 Font Arial, Times New Roman, Tahoma 6 .Net Framework 2.0
7 Flash player 9.x Bản activeX cho IE, bản plugin cho firefox,….
1.2.Cài đặt cho cơ sở dữ liệu:
Bước 1: Chép thư mục mimes vào ổđĩa D:
Bước 2: Chọn Start/Microsoft SQL Server/Enterprise Manager, đăng nhập vào SQL Server 2000 (user: sa, password: rỗng).
Bước 3: Chọn Microsoft SQL Servers/ SQL Server Group/ (Local) (WindowsNT), nhấn vào Database.
Bước 5: Chọn nút … , dẫn đến tâp tin Restaurant.mdf (database owner = sa;) từ C:\ mimes, nhấn OK
1.3.Cài đặt cho web trên web server:
Bước 1: Vào thư mục mimes/ chép thư mục mimes vào C:\Inetpub\wwwroot\
Bước 2: Chọn Start/Administrative Tools/Internet Information Services hoặc Control Panel/ Administrative Tools/Internet Information Services.
Bước 3: Từ panel bên trái, mở Local computer/Web sites/Default Web Site.
Bước 4: Nhấn phải lên mimes chọn Property. Trong thẻ Directory chọn Create.
Bước 5: Trong thẻ ASP.NET chọn ASP.NET version: là 2.0.xxxx. Nhấn OK
1.4.Cài đặt plugin:
Bước 2: Nếu máy chưa cài Visual Studio Net 2005 thì vào thư mục mimes. Nhấn vào tập tin CRRedist2005_x86.msi để cài đặt thành phần hiển thị report.
1.5.Hoàn thành:
Mở Internet Explorer 7 hoặc Firefox 2.x, gõ địa chỉ: http://localhost/mimes/mimes.html, chúng ta sẽ thấy:
2. Giải thích chương trình:
2.1.Phía người dùng:
2.1..1. Trang giới thiệu:
Tên Kiểu Bẫy lỗi Sự kiện Hành động
Mimes Image Không Nhấn Mở trang chủ
Ảnh Image Không Nhấn Hiện ảnh đó lên bên trên
2.1..2. Trang bắt đầu:
Tên Kiểu Bẫy lỗi Sự kiện Hành động
Tên đăng nhập Textbox Không
Mật khNu Textbox Không
Đăng nhập Button Không Nhấn Kiểm tra tài khoản đăng nhập
Đăng ký Link Button Không Nhấn Mở trang Đăng ký Quên mật khNu Link Button Không Nhấn Mở trang Quên mật
khNu
Bắt đầu tại đây Image Không Nhấn Mở trang chủ
Trang chủ Button Không Nhấn Mở trang chủ
Thực đơn Button Không Nhấn Mở trang thực đơn Sự kiện Button Không Nhấn Mở trang sự kiện