Tìm hiểu về Công nghệ xây dựng Website

Tài liệu Tìm hiểu về Công nghệ xây dựng Website: Phần I: Tìm hiểu về Công nghệ xây dựng Website Hiện nay có rất nhiều công nghệ để xây dựng nên những Website như là JSP (Java Server Page), ASP (Active Server Page) … Ở đây, chúng ta chỉ tìm hiểu về ASP là công cụ được sử dụng để xây dựng Website này. Chương I: Giới thiệu về ASP (ACTIVE SERVER PAGES) 1) Tìm hiểu công nghệ ASP a. ASP là gì : - Microsoft Active Server Pages là một môi trường hỗ trợ cho các Script chạy trên Server (Server-Side Scripting) cho phép tạo hoặc xây dựng các ứng dụng Web mạnh chứa các thẻ HTML, text và các lệnh Script hay các ứng dụng Web động, giao tiếp giữa Client và Server một cách hiệu qủa. - ASP hoạt động dựa vào các Script do người lập trình tạo ra. Các trang ASP có thể gọi các thành phần ActiveX để thực hiện các công việc như kết nối với với một Database hoặc thực hiện một tính toán kinh doanh. Với ASP, bạn có thể đưa nội dung tương tác...

doc82 trang | Chia sẻ: hunglv | Lượt xem: 1130 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Tìm hiểu về Công nghệ xây dựng Website, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Phần I: Tìm hiểu về Công nghệ xây dựng Website Hiện nay có rất nhiều công nghệ để xây dựng nên những Website như là JSP (Java Server Page), ASP (Active Server Page) … Ở đây, chúng ta chỉ tìm hiểu về ASP là công cụ được sử dụng để xây dựng Website này. Chương I: Giới thiệu về ASP (ACTIVE SERVER PAGES) 1) Tìm hiểu công nghệ ASP a. ASP là gì : - Microsoft Active Server Pages là một môi trường hỗ trợ cho các Script chạy trên Server (Server-Side Scripting) cho phép tạo hoặc xây dựng các ứng dụng Web mạnh chứa các thẻ HTML, text và các lệnh Script hay các ứng dụng Web động, giao tiếp giữa Client và Server một cách hiệu qủa. - ASP hoạt động dựa vào các Script do người lập trình tạo ra. Các trang ASP có thể gọi các thành phần ActiveX để thực hiện các công việc như kết nối với với một Database hoặc thực hiện một tính toán kinh doanh. Với ASP, bạn có thể đưa nội dung tương tác với các trang Web của bạn hoặc xây dựng toàn bộ các ứng dụng Web sử dụng các trang HTML như giao tiếp với khách hàng của bạn. b. Trang ASP: Mỗi trang .asp có thể bao gồm một trong các thành phần sau: HTML, Script của ngôn ngữ VBScript hoặc JScript, Text trong đó các tag HTML và Text sẽ được xử lý bình thường như đối với các văn bản HTML (.html) thông thường, các Script sẽ được một bộ phận (engine) của ASP thông dịch và thi hành trên Server. Có thể xem trang ASP như một trang HTML có bổ sung các ASP Script Command. c. Quá trình biên dịch một trang asp : Các Script của ASP được chứa trong các text file có phần mở rộng là .asp. Script thường được viết bằng một ngôn ngữ VBScript hay JavaScript. Khi một Web browser gửi yêu tới một trang .asp. Khi đó Web server sẽ đọc và tiến hành biên dịch các lệnh script trong đó và trả kết quả về cho Web browser dưới dạng của một trang HTML. d. Tính chất của asp : - ASP có tính chất động: ta có thể chèn một đoạn Script vào bất kỳ nơi nào trong trang HTML, đây là đăc tính quan trọng nhất và là cốt lõi của công nghệ ASP, chính điều này đã mang lại rất nhiều điều thú vị mà trong HTML không có. - ASP có tính hướng đối tượng: với các build-in Object rất tiện dụng : Request, Response, Server, Apllication, Session, … - Có khả năng mở rộng các thành phần ActiveX Server (ActiveX Server Components). - Các ứng dụng ASP dễ tạo vì dùng các ASP Script để viết các ứng dụng. Khi tạo các Script của ASP ta có thể dùng bất kỳ một ngôn ngữ Script nào, chỉ cần có scripting engine tương ứng của ngôn ngữ đó. - Việc chèn các Script vào file HTML làm cho quá trình xử lý tạo ra văn bản HTML (Dynamic Pages) đồng thời với việc xử lý các Script, điều bày sẽ làm cho hoạt động của trang Web sẽ trở nên linh động hơn, uyển chuyển hơn. - Các file .asp cũng tương thích với file HTML, và việc viết các Script đơn giản, không phải biên dịch hay liên kết như việc lập trình thông thường, ASP cung cấp các đối tượng tiện lợi cho nhiều thao tác như: Request, Response, Server, Apllication, Session. Các đối tượng có sẵn này của môi trường ASP sẽ giúp cho việc giao tiếp dữ liệu giữa Client và Server thực sự tiện lợi, cũng như việc quản lý ứng dụng một cách linh hoạt nhờ vào các biến Session, Application. e. Ưu điểm và khuyết điểm của ASP Ưu điểm : ASP bổ sung cho các công nghệ đã có từ trước như CGI (Common Gateway Interface), Giúp người dùng xây dựng các ứng dụng web với những tính năng sinh động. Tuy nhiên, khác với CGI, các trang ASP không cần phải hợp dịch. Dễ dàng tương thích với các công nghệ của Microsoft. ASP sử dụng ActiveX Data Object (ADO) để thao tác với cơ sở dữ liệu hết sức tiện lợi. Với những gì ASP cung cấp, các nhà phát triển ứng dụng Web dễ dàng tiếp cận công nghệ này và nhanh chóng tạo ra các sản phẩm có giá trị. Điều này hết sức có ý nghĩa trong điều kiện phát triển như vũ bão của tin học ngày nay. Nó góp phần tạo nên một đội ngũ lập trình Web lớn mạnh. ASP có tính năng mở. Nó cho phép các nhà lập trình xây dựng các Component và đăng ký sử dụng dễ dàng. Hay nói cách khác ASP có tính năng COM (Component Object Model). Khuyết điểm : ASP chỉ chạy và tương thích trên môi trường Windows, điều này làm ASP bị hạn chế rất nhiều. Dùng ASP chúng ta sẽ gặp không ít khó khăn trong việc can thiệp sâu vào hệ thống như các ứng dụng CGI. ASP không được sự hổ trợ nhiều từ các hãng thứ ba. Các ứng dụng ASP chạy chậm hơn công nghệ Java Servlet. Tính bảo mật thấp. Không giống như CGI hay Java servlet, các mã ASP đều có thể đọc được nếu người dùng có quyền truy cập vào web server. Có lẽ đây là lý do quan trọng nhất để người dùng không chọn công nghệ ASP. 2) Các thành phần và cú pháp ASP : ASP bao gồm các thành phần sau : 1. Các bộ dịch ngôn ngữ VBScript và JScript. 2. Thư viện các đối tượng, chuyên dùng để truy xuất Database thông qua ODBC Driver (Active Server Data Object – ADO). Thư viện các đối tượng hỗ trợ cho việc viết các trang ASP. Một file ASP thực chất là một văn bản, nó có thể bao gồm các thành phần sau: +Văn Bản (Text) + Các HTML tag. + Các Script. Mỗi Script này sẽ thực hiện một công việc nào đó, giống như các phát biểu của một ngôn ngữ lập trình. Một Script là một chuỗi các lệnh script, nó có thể là: Một phép gán giá trị cho một biến. Một yêu cầu Web Server gửi thông tin đến Brower. Tổ hợp các lệnh riêng rẽ thành một thủ tục hay một hàm giống như trong các ngôn ngữ lập trình. Việc thi hành một Script là quá trình gửi chuỗi các lệnh tới Scripting Engine, tại đây ASP sẽ thông dịch các lệnh này và chuyển tiếp cho máy tính. Script được viết bằng một ngôn ngữ với các luật được đặt tả nào đó, nếu ta muốn sử dụng một Script Language nào thì trên Server phải chạy Script Engine cho ngôn ngữ đó. Trong ASP cung cấp hai Script Engine là VBScript và JScript (với VBScript là mặc nhiên). Tuy nhiên ASP không phải là ngôn ngữ Script, mà nó chỉ cung cấp một môi trường để xử lý các Script mà ta chèn vào trong các file .asp, việc chèn này phải tuân theo một cú pháp nhất định của ASP. a .Dấu ngăn cách (Delimiter): Trong văn bản ASP ta sử dụng các dấu để ngăn cách phần văn bản HTML với phần Script, hay cụ thể là bất cứ một phát biểu Script nào cũng đều phải nằm giữa hai ngăn cách b. Câu lệnh (Statement): Một câu lệnh trong VBScript hay trong ngôn ngữ Script khác là một cấu trúc dùng để thực hiện một thao tác, câu lệnh phải được khai báo hoặc định nghĩa trong ngôn ngữ Scripting. Các ngôn ngữ Script trong ASP cung cấp cho ta hầu hết các cấu trúc điều khiển : IF…ELSE, For, While, DO WHILE… cùng với những kiểu dữ liệu cơ bản như Integer , char, string, Array … để sử dụng. c. SCRIPT tag: Các phát biểu, biểu thức, lệnh, hay thủ tục mà bạn sử dụng bên trong hai dấu ngăn cách phải được nhìn nhận bởi ngôn ngữ Script mặc định hoặc ngôn ngữ Script được khai báo ở đầu trang ASP. Ngôn ngữ Scripting mặc định của ASP là VBScript, tuy nhiên với ASP ta vẫn có thể sử dụng các ngôn ngữ lập trình khác bên trong bằng cách sử dụng thẻ và d. Include file: Khi tạo một ứng dụng Web, bao gồm nhiều trang ASP, nếu như toàn bộ các trang đều cần sử dụng những thông tin chung nào đó chẳng hạn như các hằng, giá trị … Để tránh lại việc định nghĩa lại các giá trị này, ta có thể sử dụng cơ chế include file của ASP (giống như trong ngôn ngữ lập trình cổ điển). Để include một file trong trang ASP ta sử dụng cú pháp sau: 3) Các đối tượng cơ bản của asp: ASP cung cấp cho người lập trình các đối tượng có sẵn, mỗi đối tượng này sẽ thực hiện một chức năng riêng nào đó, các đối tượng có sẵn (built-in oject) bao gồm: Tên đối tượng Chức năng Request Lấy thông tin từ một user. Respone Gửi thông tin tới một user. Server Điều khiển môi trường hoạt động của ASP. Session Lưu giữ thông tin về một session của user. Application Chia sẻ thông tin giữa các user trong cùng một ứng dụng. a. Đối tượng Request Với đối tượng Request, các ứng dụng ASP có thể dễ dàng lấy được thông tin gửi tới từ user. Đối tượng Request cho phép truy xuất chi tới bất kỳ thông tin nào user gửi tới bằng giao thức HTTP như: 1. Các thông tin chuẩn nằm trong các biến Server (Variable Server). 2. Các tham số được gửi tới bằng phương thức POST. 3. Các thông tin được gửi tới bằng phương thức GET. 4. Các Cookies (là thông tin của User được gửi kèm theo) tới từ Browser. 5. Các Client Certificates. Đối tượng Request tìm kiếm các giá trị mà Client Browser đưa vào Server trong khi có một yêu cầu HTTP. Cú pháp: Request.collection|property|method Collections: Cookies: Giá trị của các Cookie gởi trong yêu cầu HTTP. Form: Giá trị các phần tử Form trong thân của yêu cầu HTTP. QueryString: Giá trị của các biến trong trong chuỗi truy vấn HTTP. ServerVariables: Giá trị của các biến môi trường đã được xác định trước. Properties: TotalBytes: Tổng số byte Client đang gởi trong thân của yêu cầu. Các tham số biến là chuỗi ký tự chỉ rõ mục (item) được tìm kiếm từ một collection hoặc được sử dụng như là mục vào đối với một phương thức (method) hoặc một property. Ngoài ra, tất cả các biến có thể được truy cập một cách trực tiếp bằng cách gọi cú pháp Request(variable) mà không cần tên collection. Trong trường hợp này, Web Server tìm kiếm các collection theo thứ tự sau: QueryString Form Cookies ClientCertificate ServerVariables b. Đối tượng Response Bạn có thể sử dụng đối tượng Response để gởi kết xuất tới Client. Cú pháp Response.collection |property| method Collections : Cookies : Chỉ định giá trị cookie và thiết lập các giá trị cookie. Properties : Buffer : Chỉ ra liệu trang kết xuất được đệm hay không. ContentType : Chỉ định kiểu nội dung HTTP (vd:”Text/HTML”) khi đáp ứng. Expires : Chỉ định thời gian trước khi một trang lưu trữ trên Browser kết thúc. CacheControl: Xác định các Proxy Server có thể kết quả đầu ra phát sinh bởi ASP. Charset: Thêm vào bộ ký tự Header Content-Type ExpiresAbsolute: Ngày giờ 1 trang được dấu trên Browser hết hạn IsClientConnected: Kiểm tra kết nối Client có bị gián đoạn từ Server PICS: Thêm giá trị vào nhãn PICS field pics-label của Header Status: Giá trị dòng trạng thái HTTP được trả ra bởi Server Methods : AddHeader : Thiết lập tên (name) tiêu đề HTML bằng giá trị (value). AddHeader: Thêm hoặc thay đổi trị số trong HTTP header AppendToLog: Thêm text vào cổng vào nhật ký Web Server BinaryWrite: Gửi text lên Browser mà không cần chuyển đổi bộ Charset. Clear: Hủy bỏ vùng đệm kết xuất HTML. End: Ngưng xử lý trang và trả ra kết quả hiện hành. Flush: Gửi kết quả đầu ra được đệm ngay lập tức. Redirect: Hướng dẫn cho Browser kết nối với 1 địa chỉ URL khác. Write: Xuất một biến tới trang hiện hành như là một chuỗi. c. Đối tượng Server Đối tượng Server cung cấp truy cập tới các phương thức và đặc tính (property) trên Server. Hầu hết các phương thức và đặc tính (property) Server như là các chức năng tiện ích. Cú pháp : Server.property|method Properties : ScriptTimeout : Khoảng thời gian mà một Script có thể chạy trước khi hết thời gian (time out). Methods : CreateObject : Tạo một thực thể (instance) của một đối tượng hoặc thành phần server. HTMLEncode : Mã hóa chuỗi thành dạng HTML. MapPath : Aùnh xạ đường dẫn ảo, đường dẫn tuyệt đối hay tương đối trên Server hiện hành vào một đường dẫn vật lý. URLEncode : Mã hóa chuỗi kí tự thành dạng URL. d. Đối tượng Session Đối tượng Session được sử dụng để lưu trữ và tìm lại thông tin về một User Session. Các giá trị lưu trữ trong đối tượng Session không bị loại bỏ đi khi user di chuyển từ trang này sang trang khác trong ứng dụng, Web Server tự động tạo ra một đối tượng Session khi một trang Web trong ứng dụng được yêu cầu bởi một User chưa có Session. Server hủy bỏ đối tượng Session khi nó hết thời gian hay được hủy bỏ. Thực tế, một Session chỉ thuộc về một User. Dữ liệu Session thường gắn liền với một User, nó quản lý các thông tin về User đang sử dụng một ứng dụng . Cú pháp : Session.collection |property| method Collections : Contents Chứa các mục (item) mà bạn thêm vào Session với các lệnh Script. Properties : SessionID : Trả về định danh Session đối với User. Timeout : Khoảng thời gian đối với các Sessio. Methods : Abandon Hủy bỏ một đối tượng Session và giải phóng tài nguyên của nó. Events : Se_OnStart : Xảy ra khi người sử dụng đầu tiên yêu cầu một trang trong một chương trìng. Se_OnEnd : Xảy ra khi Session kết thúc. e. Đối tượng Application Với đối tượng Session chúng ta đã có thể thực hiện việc lưu trữ dữ liệu chung giữa các trang trong một phiên làm việc của người sử dụng. Đối tượng Application cung cấp phương tiện cho phép chia sẻ dữ liệu giữa các người sử dụng khác nhau (mỗi người sử dụng này có riêng một Session) của cùng một ứng dụng. Như ta đã biết, ứng dụng ASP là tập hợp các trang .asp (và các thư mục con), được cái đặt trong một Virtual Directory. Mỗi ứng dụng ASP được cung cấp một không gian để lưu trữ các dữ liệu toàn cục của nó gọi là tầm vực Application. Việc truy xuất vào tầm vực này do đối tượng Application quản lý và thực hiện. Thời gian sống của tầm vực Application được tính từ khi ứng dụng bắt đầu chạy (Web Server khởi động) cho đến khi ứng dụng bị huỷ bỏ (Web Server stop). Để lưu trữ một dữ liệu trong tầm vực Application, sử dụng cú pháp: Application(“tênbiến”)=giá trị; Việc lưu trữ và thao tác với các đối tượng dữ liệu (như mảng) trong Application được thực hiện tương tự như đối với các biến Session. Vì các biến trong tầm vực Application có thể được truy xuất bởi nhiều User khác nhau, nên đối tượng Application cung cấp hai phương thức lock() và unlock() để loại trừ tương hỗ khi truy xuất vào vùng dữ liệu dùng chung này. Phương thức Application.Lock(): Thực hiện khóa dữ liệu. Trong khi một User khóa tầm vực Application, các User khác sẽ không có khả năng cập nhật hay thay đổi trong vùng này. Phương thức Application.Unlock(): Được gọi để mở khóa. Khi khóa đã mở, các User khác có thểthực hiện thao tác cập nhật dữ liệu trong tầm vực Application. Nhìn chung, khi một User cần thực hiện thao tác cập nhật cùng Application, nó thực hiện các bước sau trong kịch bản: Gọi Application.Lock(); Thực hiện các thao tác với các biến Application. Gọi Application.Unlock(); Cú pháp: Application.collection | Method | Event Collection Contents: Chứa tất cả các item được thêm vào ứng dụng bằng các câu lệnh Script. Staticobjects: Chứa tất cả các đối tượng được thêm vào ứng dụng bằng tag Method Lock: Ngăn cản các Client khác sửa đổi thuộc tính của ứng dụng. Unclock: Cho pháp các Client khác được sửa đổi thuộc tính của ứng dụng. Events OnStart: Xảy ra khi 1 trang trong ứng dụng được xem đầu tiên. OnEnd: Xảy ra khi thoát ra khỏi ứng dụng, sau biến cố Session_onEnd. 4) Các thành phần (component) của asp. Ngoài các đối tượng cơ bản có sẵn trong môi trường ASP, việc tạo các trang Web động bằng ASP còn được trợ giúp nhờ một số thư viện các đối tượng (ActiveX Component) của ActiveX Server. Các thành phần được thiết kế để chạy trên Web Server như một ứng dụng Web cơ sở hợp thành các gói nhỏ đặc trưng chung là động. Mỗi thành phần được sử dụng cho một công việc chuyên biệt nhiệm cho là một thư viện các lớp (hay đối tượng), được thiết kế ở dạng Automation Server, thực hiện một nhóm công việc chung nhất cho một thao tác nào đó, chẳng hạn như truy xuất database, truy xuất file… vì thế người phát triển ứng dụng Web bằng ASP khộng cần phải tạo lại các đặc tính này. Chúng ta có thể tạo động, tương tác với các trang Web bằng cách sử dụng các thành phần Server đã được included với Active Server Pages (ASP) trong các đoạn Script của ta. 5) Truy xuất cơ sở dữ liệu trong ASP. Ở phần trên chúng ta đã biết về các khái niệm tổng quát về ASP và các thành phần cần có khi xây dựng một ứng dụng. Trong phần này sẽ trình bày kỹ hơn về Active Data Object, đây chính là ưu điểm mạnh nhất cho việc phát triển ứng dụng cơ sở dữ liệu trên web (Web database). DataBase Access Component : Một ứng dụng Web database viết bằng ASP có thể truy xuất dữ liệu trong môi trường database bằng cách sử dụng Component Database Access của ActiveX hay còn gọi là thư viện ADO (Active Data Object). Đây cũng chính là điểm mạnh nhất của ASP trong việc phát triển ứng dụng Web database. Các Object của ADO cung cấp có thể tạo ra các kết nối (Connection) với hầu hết các kiểu Database, cũng như việc truy xuất, cập nhất các database này. Hiện nay thư viện ADO là công cụ mạnh nhất trong việc phát triển các ứng dụng database trên Internet. Trong phần này ta sẽ xem xét các thành phần trong thư viện công cụ này. ADO interface : ADO được thiết kế một cách đơn giản nhất, nó giao tiếp với database thông qua phương thức ODBC (Open DataBase Connectivity), chúng ta có thể sử dụng chúng với bất kỳ loại database nào nếu như ODBC có driver hỗ trợ. Hiện nay tồn tại driver cho hầu hết các loại database như Foxpro, Access, Oracle, SQl Server, . . . Sự giao tiếp giữa ADO và các thành phần khác trong hệ thống có thể được mô tả theo hình vẽ sau: Quá trình truy xuất cơ sở dữ liệu thông qua ODBC Các Object trong ADO : Các Object chính trong đó là: Connection, RecordSet và Command. Ngoài ba Object chính này còn có các Object, tham số, thuộc tính, phương thức. Sử dụng Connection ta có thể thiết lập sự liên kết với cơ sở dữ liệu, thông qua đó ta có thể thực hiện các Query để lấy ra các record hoặc cập nhật một record bằng cách sử dụng Command Object. Kết quả thực hiện các Query trên Database sẽ được lưu vào đối tượng Recordset, trên đối tượng này ta có duyệt và lấy ra một hay nhiều Record. Sau đây ta xem xét cụ thể cấu tạo cũng như cách sử dụng của từng Object. Đối tượng Connection : Để sử dụng tốt đối tượng Connection, trước tiên ta phải tạo ra một Instance cho nó, đây thực sự là một thể hiện của Object này trong ASP. Phát biểu tạo Instance cho Connection có cú pháp như sau: <% Connection_name=Server.CreateObject(“ADODB.Connection”) %> Thông thường trong một ứng dụng nếu ta cần có một liên kết với Data source cố định cho tất cả các trang thì khi đó ta sẽ đặt Instance của Connection có tầm vực ở mức Application bằng cách đưa phát biểu tạo Instance ở trên vào các thủ tục Application_onStar(): <% Sub Application_onStar() Set Connection_name = Server.CreateObject (“ADODB.Connection”) End Sub %> Hoặc thiết lập tầm vực cho Connection ở mức Session như sau: <% Sub Session_onStar() Set Connection_name=Server.CreateObject(“ADODB.Connection”) End Sub %> Tuy nhiên ta có thể xem xét thêm việc tối ưu cho các Connection trong một ứng dụng có nhiều User truy xuất tới database, đó là khả năng Connection pooling. Connection pooling : Các ứng dụng cơ sở dữ liệu truyền thống đều tạo một mối liên kết tới database mà nó sử dụng, còn các ứng dụng Database trên web lại mở và đóng các liên kết này ở mỗi trang web. Một phương pháp cho các ứng dụng Database trên web là tạo một sự liên kết liên tục với cơ sở dữ liệu của từng User và lưu trữ trong đối tượng Session. Tuy nhiên, phương pháp này làm gia tăng số lượng các User kết nối tới cơ sở dữ liệu mà không làm việc và nó chỉ đạt được độ tin cậy đối với các Website có sự liên thông dữ liệu thấp (low-traffic). Phương pháp tiện lợi hơn trong việc quản lý các kết nối với cơ sở dữ liệu của ứng dụng web là quản lý bằng Connection Pool của ODBC nhằm giảm bớt số lượng liên kết rảnh rỗi. ODBC sẽ mở các kết nối và quản lý các kết nối này mỗi khi có một yêu cầu kết nối mới thì thực hiện việc kiểm tra xem có liên kết nào rảnh không, nếu không thì sẽ tạo kết nối mới, ngược lại sẽ lấy liên kết rảnh này mà không tạo liên kết mới. Nếu có một liên kết rảnh nào trong Connection Pool tồn tại quá 60 giây thì nó sẽ tự động hủy bỏ. Connection Pooling được kích hoạt mặc nhiên trong ASP, ta có thể loại bỏ bằng cách thiết lập giá trị Register Entry Star Connection Pool về giá trị 0. Các phương thức của đối tượng connection : Open method : Sử dụng để mở một kết nối với Database. Sau khi tạo một instance cho Connection Object. Ta có thể mở một kết nối với data source để có thể truy xuất dữ liệu, cú pháp như sau: Connection.open ConnectionString User password Trong đó ConnectionString là chuỗi định nghĩa tên của datasource (DNS), tên này được khai báo trong ODBC. User và password sẽ thực hiện việc mở Database. Execute method : Phương pháp này cho phép thực thi một câu lệnh, tác động lên data source. Ta có cú pháp như sau : Connection.Execute Commandtext.RecordAffected.options Trong đó thông số option có các giá trị khác nhau tương ứng với mỗi loại CommanText. Các giá trị của Option theo bảng sau: Giá trị Danh hiệu hằng tương ứng Mô tả CommanText 0 AdCmdUnknown Giá trị này mặc định khi định nghĩa 1 AdCmdText CommandText là một câu lệnh (vd: SQL) 2 AdCmdTable Tên của Table mà ta sẽ tạo một RecordSet từ đó 3 AdCmdStoreử dụngPro Một Seaticored procedure trong data source Close method : Trong các trang ASP, sau khi đã xử lý xong dữ liệu trên data source, trước khi kết thúc một trang sử dụng phải đóng lại các kết nối đã mở. Việc đóng kết kết nối thực hiện nhờ phương thức Close. Cú pháp như sau: Connection.Close Nếu chương trình không thực hiện việc này thì ASP sẽ tự động đóng Connection mở trong trang. Mỗi khi người sử dụng tham khảo sang trang khác (đi khỏi tầm vực của biến Instance). Nếu ta tạo Instance và mở kết nối trong các thủ tục Application hoặc Session_onStar việc đóng các Connection này sẽ được thể hiện trong thủ tục onEnd. Đối tượng Command : Thay vì phải sử dụng phương thức Execute của đối tượng Connection để Query hay Update data resource, ta có thể sử dụng đối tượng Command dễ thi hành các thao tác với cơ sở dữ liệu. Việc tạo một Instance cho đối tượng Command cũng như đối tượng Connection. Nghĩa là cũng sử dụng phương thức Server.CreateObject. Command-name=Server.CreateObhec (“ADODB.Command”) Tuy nhiên để sử dụng đối tượng này ta cần xem xét các phương thức và thuộc tính kèm theo. Các phương thức (Methods) : Create Paramater: Dùng để tạo một đối tượng (thông số) trong tập thông số Execute: Dùng để thực thi câu lệnh được đặc tả trong thuộc tính CommandText. Các thuộc tính (Properties): ActiveConnection :Chỉ định đối tượng Connection nào được sử dụng trong đối tượng Command. CommandText: Chỉ định câu lệnh cần thực thi trên cơ sở dữ liệu . CommandTimeOut: Xác định thời gian thực thi lệnh, giá trị thời gian thực thi được tính theo giây. CommandType: Cho biết kiểu của Query đặc tả trong CommandText Prepared : Tạo ra lệnh chuẩn bị trước khi thực thi. Tạo ActiveConnection : Sau khi đã có các Instance của các Connection Object đã được kết nối với cơ sở dữ liệu và Command Object. Lúc này nếu muốn sử dụng Command Object ta phải gán tên của Connection thích hợp (Connection nào kết nối tới cơ sở dữ liệu cần làm việc) vào cho thuộc tính ActiveConnection của Command Object Command-name.ActiveConnection = Command-name; Thực thi Query : Ta có thể sử dụng phương thức Execute của Command gần giống như Connection. Tuy nhiên điểm khác với Connection là đối tượng Command nếu ta có dự định thi hành một lệnh nào thì ta phải gán động cho các giá trị thuộc tính CommandText, Parameter, … Các Methods : Append : Thêm một thông số vào Collections. Delete : Xóa một thông số trong Collections. Refresh : Làm tươi lại sự thay đổi thông số đó. Các Properties : Count : trả về các thông số có trong Collections. Item : được sử dụng để lấy giá trị của một thông số trong Collections. Atribute: Thể hiện kiểu dữ liệu mà thông số đó chấp nhận. Direction : Thể hiện hướng của thông số là Input, Output hay cả hai, ... Name : Tên thông số. NumberScale : Số chữ số thập phân trong thông số kiểu số. Size : Kích thước lớn nhất tính theo byte. . . . . Đối tượng RecordSet : Bằng cách sử dụng các đối tượng Connection và Command ta có thể thực thi các query để Add, Update, or Delete, . . .một Record trong Datasource. Các Method: AddNew : Là phương thức để tạo ra một Reccord. Close : Đóng lại đối tượng. Delete : Xóa đi Record hiện hành trong RecordSet. Move : Dịch chuyển vị trí Record hiện tại. Các phương thức dịch chuyển con trỏ : MoveFirst, MoveNext, MovePrevious, MoveLast. Các Properties : AbsolutePosition: Số thứ tự hay Record hiện tại. BOF : Có giá trị True nếu con trỏ nằm ở Record đầu tiên. CursorType: Kiểu con trỏ được sử dụng trong RecordSet. RecordCount : Trả vể số Record trong RecordSet. Phần II: Tìm hiểu về Chat và Mail Chương I: Tìm hiểu về Chat theo chuẩn IRC Hiện nay trên Internet có nhiều loại dịch vụ, mỗi dịch vụ cung cấp cho chúng ta một tiện ích khác nhau, trong đó có dịch vụ Chat. Đây là loại dịch vụ cho phép mọi người trên khắp hành tinh có thể gặp gỡ, trao đổi thông tin với nhau mà không cần phải gặp nhau trực tiếp. Dịch vụ này rất phát triển, có đến hàng triệu người trên thế giới đang sử dụng dịch vụ này. Vì vậy vấn đề đặt ra là phải có một quy định chung cho hệ thống mạng IRC (Internet Relay Chat). Ủy Ban IAB về các giao thức chuẩn (IAB Official Protocol Standards) đã đưa ra một giao thức chuẩn (Standard protocol) dùng cho tất cả các chương trình chat đang tồn tại. Đó là IRC (Internet Relay Chat) protocol được định nghĩa trong RFC (Request For Comment) 1459, 2810, 1324, 2811, 2813. IRC Protocol được đưa ra vào năm 1980, tiền thân của nó, dùng cho các thành viên trong mạng BBS trao đổi thông tin với nhau, dần dần được cải tiến và trở thành giao thức chuẩn cho các chương trình IRC. Quy mô của IRC protocol là trên toàn cầu, gồm có 2 thành phần Client và Server. Hiện nay IRC Protocol được xây dựng trên họ giao thức mạng phổ biến nhất là TCP/IP (TCP/IP Net Work Protocol) lý do việc sử dụng họ giao thức này là tính chính xác, tin cậy, phổ biến, rất thích hợp cho các cuộc thảo luận từ xa. IRC Protocol dùng mô hình Client–Server, vì thế chúng ta có thể chạy nhiều máy trên môi trường phân tán (distributed enviroment). Trong đó máy đóng vai trò là Server cung cấp một điểm tập trung (central point) cho các Client kết nối đến, và đồng thời thực hiện quá trình truyền nhận message từ các Client này đến các Client khác. I) Một số khái niệm cơ bản. 1. Servers: Server được xem là xương sống của mạng IRC, mỗi Server là một tâm điểm trong hệ thống các Server, chúng cho phép Client và Server khác kết nối vào. Những Server này được kết nối theo biểu đồ hình cây (Spanning Tree). 2. Clients Client là một máy tính mà nó được kết nối đến Server và máy tính đó không phải là Server. Client là thiết bị đầu cuối nó không chuyển tiếp message cho bất cứ máy tính nào khác Mỗi Client được phân biệt với nhau thông qua Nickname (Nickname là chuỗi có giá trị tối đa 9 ký tự ). Server dùng Nickname để quản lý các Client. Khi có sự tham gia của một Client vào hệ thống, tất cả các Server phải có thông tin về Client đó như là tên Client (Hostname), tên Server mà nó kết nối đến v.v ... Operators: Để có thể quản lý số lượng User tham gia trên mạng (IRC network) người ta xây dựng một nhóm User gọi là “Client Operator” nhóm này có đầy đủ mọi quyền hạn trên mạng (IRC network). Mặc dù quyền hạn (cấp cho Client Operation) có thể được xem là “nguy hiểm”, nhóm “Client Operator” có thể thực hiện các tác vụ như hủy bỏ kết nối (disconnecting) của một Client nào đó hoặc tái kết nối (reconnecting) đến Server nào đó. Những tác vụ này có thể thực hiện khi có một Server bị hỏng hay khi có sự cố về đường truyền và nhiều nguyên nhân khác. Chính vì khả năng đó nên người ta cho rằng nhóm “Client Operator” có thể nguy hiểm. vì có thể nhóm Client này hủy bỏ kết nối của một Client khác mà không có lý do hợp lý, hay mục đích chính đáng. 3. Channels Channel là tên nhóm một hay nhiều client, mà những client này sẽ cùng được nhận các message gởi đến channel đó, nói cách khác là các client thuộc về một channel sẽ nhận được message gởi đến channel đó. Những client trong cùng một channel mới có thể nhận thấy nhau. Một channel được ngầm tạo ra khi có client đầu tiên tham gia và kết thúc khi client cuối cùng ngưng kết nối. Trong khi channel đang tồn tại thì client có thể tham gia vào channel đó bằng cách dùng tên channel. Tên của channel có thể lên đến 200 ký tự và bắt đầu bằng ký tự ‘&’ hoặc ký tự ‘#’, Tên channel không có ký tự khoảng trắng (‘ ‘), Ctr+G(^G or ASCII 7), dấu phẩy (‘,’ ). Để có thể tạo ra một channel hay là tham gia vào một channel có sẵn client phải gởi JOIN message để tham gia vào channel đó. Channels operation : Channel oprerator còn được gọi là “chop” hoặc “chanop”. Khi có một user tạo ra channel thì mặc nhiên user đó trở thành channel operator, là người sở hữu channel user (channel operator) có đầy đủ mọi quyền hạn trên channel đó. Để quản lý các client channel operator có thể thực hiện quyền của mình như : ð KICH - đẩy một client ra khỏi channel ð MODE - thay đổi mode của channel ð INVITE - gọi một client tham gia vào channel mà nó đang ở trạng thái invite-only (mode i+). ð TOPIC - thay đổi topic channel, channel này đang ở trạng thái +t(mode +t). Ngoài ra channel operator có thể cấp quyền cho client khác hay nhường quyền channel operator lại. Tuy nhiên quyền hạn này không được chính xác vì những nguyên nhân đã được trình bài phần trên. Một channel operation thì được nhận dạng bởi ký tự bắt đầu “@” tiếp theo là nickname (nick name của user tạo ra channel đó). Ví dụ @HappyMan II) Những quy định trong IRC. Dạng chung của thông điệp. Thông điệp thường có 2 dạng: Các thông điệp xuất phát từ lệnh (thông điệp được phát sinh từ một lệnh): là thông điệp được client gửi lên server để yêu cầu một mục đích nào đó (ví dụ như hỏi thông tin một nick nào đó, hay hỏi thông tin các channel, hoặc chỉ đơn giản là muốn gửi thông điệp cần nói trên channel…). Các thông điệp này có thể không còn nguyên thủy như khi user gõ vào, mà chúng được gắn thêm prefix (địa chỉ host, nickname... của user gửi). Thông điệp trả về: là thông điệp được server gửi về client để trả lời lại các yêu cầu của client. Các thông điệp có hai dạng: thông điệp bằng chữ và thông điệp bằng số. 2. Message Message là thông điệp từ client gởi cho server hoặc ngược lại, nếu trong message chứa lệnh (lệnh này sẽ được mô tả phần sau), thì những lệnh này sẽ được đáp lại bằng thông điệp phản hồi (reply message). Mỗi message gồm có 3 phần chính: phần đầu còn gọi là tiếp đầu ngữ (prefix), tiếp theo đó là phần lệnh (command) và cuối cùng là danh sách đối số(parameters list), mỗi phần cách nhau bởi ký tự khoảng trắng (ASCII 0x20). Bắt đầu prefix là ký tự “:” (ASCII 0x3b) chính nhờ vào ký tự này mà server nhận biết chính xác phần lệnh (command), những cú pháp lệnh sẽ được mô tả chi tiết trong phần định dạng message (format message). Nếu message từ client gởi đến mà không nhận thấy phần đầu (prefix) thì server xem như message đó được gởi từ client mà nó kết nối trực tiếp, vì thế các client muốn gởi message đến server mà nó kết nối trực tiếp không nên dùng phần prefix, nếu sử dụng cần phải sử dụng chính xác vì nếu prefix không đúng thì server không đáp lại mà nó im lặng. Phần lệnh (command) là những thành phần thuộc về IRC (được mô tả chi tiết trong phần message detail), chiều dài lệnh và danh sách đối số cho phép là 510 ký tự, cuối mỗi message có ký tự kết thúc (CR-LF) như thế tổng chiều dài chúng là 512 ký tự. Định dạng một message Vấn đề đặt ra là làm sao có thể nhận dạng và phân tích ra từ những luồng tuần tự các message gởi đến, để giải quyết vấn đề này người ta lập ra quy định cho message. [‘:’] Phần đầu(prefix) Lệnh DS đối số ký tự kết thúc Như đã mô tả ở phần trên, một message luôn cóù ký tự kết thúc nhờ vào ký tự này mà server có thể tách message ra khỏi luồng (stream). Sau khi tách ra chúng được phân tích thành 3 thành phần chính. chúng ta sẽ khảo sát chúng trong phần sau. Bây giờ chúng ta phân tích cấu trúc tổng quát cho một message: Giải thích cú pháp: @ Đối tượng nằm trong dấu [ ] có thể có hoặc không có. @ Đối tượng nằm trong dấu là bắt buột phải có. @ Toán tử ‘ | ’ là có khả năng chọn một trong hai ví dụ: “ | ” có thể chọn hoặc chọn . @ Đối tượng nằm trong dấu {} có thể xuất hiện nhiều lần. 3 thành phần chính của message: ØPhần đầu (prefix) Phần prefix có thể không có, bắt đầu prefix phải có dấu ‘:’ : ::= | [‘!’ ][‘@’ ] Ở đây chúng ta có thể thấy prefix có thể là servername hoặc nickname ngoài ra còn có thể có thêm username hay hostname hoặc cả hai. Nhưng đối với username phải có ký tự ‘!’ đứng trước, tương tự như thế hostname phải có ký tự ‘@’đứng đầu. ØPhần Lệnh (command) Phần lệnh có thể ở dạng chuỗi hoặc số : ::= {} | dễ dàng chúng ta có thể nhận thấy lệnh có thể do một hay nhiều ký tự hoặc giá trị số gồm 3 chữ số. ØPhần danh sách đối số (parameters list) ::= [‘:’ | ] Chúng ta thấy đối số có thể không xuất hiện, giải thích thêm về là chuỗi ký tự đại diện trong đó không có ký tự NULL hoặc CR, LF. Chuỗi này được đặt giữa hai ký tự “* * ” cũng là chuỗi đại diện nhưng có sự phân biệt, ký tự đầu chuỗi không được là ký tự ‘:’(ASCII 0x3b). Ví dụ: “* !* “ đại diện cho tất cả các user. “*@* “ đại diện cho tất cả host name. “*.edu “ đại diện cho nhóm server có phần cuối là edu. 3. Giá trị số trả về (numeric replies) Sau khi khảo sát về cấu trúc của một message, chúng ta được biết một message được nhận dạng như thế nào. Sau khi nhận được message, server sẽ phát ra message phản hồi (repply message). Reply Message được hiểu tương tự như là message, thật sự nó gồm 3 phần: sender prefix, giá trị số gồm 3 chữ số và target. Ø sender prefix là nickname của client gởi. Ø giá trị số được mô tả phần sau. Ø ::= | ‘@’ | | [ “,” ] để nhận biết reply message đến client nào chúng dựa vào . Ở đây chúng ta có 2 loại message phản hồi: error reply normal reply Lưu ý: chỉ có server mới có khả năng phát ra reply message. III. Chi tiết cho từng message (Message detail) Đây là phần mô tả chính cho mỗi loại message, để sever và client có thể nhận biết chúng. Server sẽ nhận message và phân tích chúng, sau đó trả lại thông báo thích hợp. Nếu phân tích message mà gặp phải lỗi (error). Khi đó server phải có cơ chế thông báo cho client. Một lỗi (error) sinh ra thường do những nguyên nhân sau: þ Sai đối số (incorrect parameter). þ Sai Lệnh(incorrect command). þ Sai địa chỉ đích Tên server NickName Channel name þ Sai vì vi phạm quyền hạn v.v… Cú pháp cho một command message :Name COMMAND parameter list Chú ý: Đối với “Name”, đó là tên của client gởi. Một server (từ xa) được client gởi message đến thì server sẽ căn cứ vào “Name”, để có thể đáp lại yêu cầu ngược lại nếu client gởi đến server mà nó kết nối trực tiếp không cần. 1. Nhóm message đăng ký kết nối Nhóm message đăng ký kết nối chịu trách nhiệm kết nối với IRC server. Trong nhóm message này có 3 loại message: v Message do server sử dụng. v Message do client sử dụng. v Message dùng chung. 1.1 Message do Server sử dụng Server Message Cú Pháp: SERVER Server message dùng để thông báo cho các server khác trên toàn hệ thống biết, có thêm một server kết nối vào hệ thống mạng (IRC network). Những thông tin về server này được chuyển cho các server khác trên mạng chứa trong đối số . Sự kiện này xảy ra khi có một server mới kết nối vào hệ thống mạng. Lúc đó server (mới kết nối vào) phát ra SERVER message, message này được phát quảng bá (broadcast) lên mạng. Lưu ý SERVER message khi gởi đến phải được chấp nhận bởi Server có tên là đối số . Giải thích: vì chúng ta biết rằng khi có một server tham gia vào hệ thống thì các server khác phải có thông tin về server đó để chúng cập nhật lại cấu hình mạng, như thế thông tin này phải thông báo cho các server khác. Message này được gởi cho từng server. Server Quit Message Cú Pháp: SQUIT SQUIT message được dùng khi server muốn thoát khỏi hệ thống mạng. Message này cũng là hành động của operator giúp giữ cho hệ thống mạng gọn hơn (orderly fashion), hoặc loại bỏ server ra khỏi hệ thống nếu nó bị treo (deal). Operator có thể dùng SQUIT message cho các server ở xa trong tình trạng này các server còn lại phải phân tích SQUIT message này để cập nhật lại thông tin về hệ thống mạng (IRC Network). lí do việc tách khỏi hệ thống, comment được operator đưa ra. 1.2 Message Client sử dụng Operator message Cú Pháp: OPRE Người dùng thông thường sử dụng dòng lệnh này để tranh quyền làm operator. Tuy nhiên, nếu server không cấu hình cho phép kết nối từ một client được phép tự thiết lập quyền làm operator khi gia nhập channel thì dòng lệnh này không có tác dụng (khi đó server sẽ trả về lỗi ERR_NOOPERHOST cho user). Khi lệnh OPER thành công, server sẽ trả về cho user đó một thông điệp như khi sử dụng lệnh MODE đặt trạng thái operator cho người dùng. Quit message Cú Pháp: QUIT [] Một client muốn thoát ra hệ thống mạng nó phát ra QUIT message đến server mà nó kết nối trực tiếp server khi nhận được message này nó sẽ đóng kết nối với client đó. Đồng thời thông báo cho server khác để các server này thông báo cho các client trong cùng channel. 1.3 Nhóm message dùng chung Pass message Cú pháp : PASS Đối với Server: Server dùng pass message để thiết lập password cho mình, bằng cách dùng password server ngăn không cho sự xâm nhập bất hợp pháp của các client khác. Server dùng pass message (có cung cấp password) trước khi server phát ra message SERVER (message này gúp cho server định danh trên mạng). Sau khi phát ra pass message server có thể đăng ký kết nối (connection register). Đối với Client : Client dùng pass message để thiết lập password cho nickname mà nó muốn đăng ký, nói cách khác. Password được dùng để không cho người khác sử dụng nickname của mình. Tất nhiên, việc thiết lập password là không cần thiết, nếu như chúng ta không cần bảo vệ nickname của mình. Tuy nhiên đối với nhóm channel operator là cần thiết. Cũng giống như server, client phải đưa ra PASS message trước khi đăng ký kết nối (bằng cách gởi NICK/USER message). Lưu ý : PASS message có thể được gởi nhiều lần. Nhưng chỉ có lần cuối cùng gởi mới được xác nhận password và xem đó là password chính thức. NickMessage Cú pháp: NICK [] Đối với Server: Server dùng NICK message để thông báo vị trí của cho các server khác, khi sever dùng NICK message đối số phải được đưa vào, (hopcount là số server phải đi qua để đến được đích). Nếu một package được chuyển trên mạng khi đi qua một server nó rừ đi hopcount một đơn vị cho đến khi hopcount bằng 0 thì đến đích. Đối với Client: Client dùng NICK message để xác định nickname cho mình hoặc thay đổi nickname của mình. Nếu NICK message dùng cho client không cần đối số . Trong trường hợp có xuất hiện đối số thì nó sẽ bị bỏ qua. Nếu NICK message từ client đến server, mà server đó đã có thông tin về nickname (nickname đã đăng ký) đó, thì hiện tượng cạnh tranh (Nickname Collision) xảy ra. Vì chúng ta được biết nickname phải là tên duy nhất không cho phép trùng. Kết quả là tất cả thông tin về nickname đó sẽ bị hủy bỏ khỏi cơ sở dữ liệu trong server (client kết nối) và một KILL message được phát ra để hủy bỏ nickname đó ra khỏi cơ sỡ dữ liệu của các server còn lại. Nếu server nhận được nickname từ client (kết nối trực tiếp vào server) mà nickname này bị trùng với một nickname hiện có trong server, thì nó sẽ phát ra thông báo lỗi ERR_NICKCOLLISION. Sau đó hủy bỏ NICK message và không phát ra KILL message. Như thế một client khi đưa ra nickname không thích hợp thì client đó không thể đăng ký kết nối với server đồng thời không ảnh hưởng đến các client khác. User Message Cú pháp: USER Đối với Server: Server dùng USER message để thông báo cho các server khác có user mới tham gia vào mạng (IRC network). Đồng thời nó cũng cung cấp cho các thông tin như , , , . Khi gởi USER message cho các server khác thì client sẽ gắn nickname vào trước message đó. Căn cứ vào nickname này, server sẽ nhận biết được thông tin thuộc về nickname nào. Nhưng có một điều lưu ý là server dùng USER message, sau khi nó nhận được NICK message và USER message từ client muốn kết nối vào hệ thống mạng. Điều này có nghĩa là client gởi NICK message thành công, tiếp đó là USER message được gởi đến server. Khi đó server sẽ phát ra USER message. Đối với Client: Sau khi đăng ký nickname thành công, client phát ra USER message để cung cấp thông tin cho server, thông tin mà nó cung cấp là , , , . Tuy nhiên có một số điều lưu ý là: hai đối số và bị bỏ đi nếu là client kết nối trực tiếp đến server. Vì lý do bảo mật trên mạng (security reasons). Và điều lưu ý thứ hai là đối số phải đứng sau cùng. Vì trong có thể có ký tự khoảng trắng và ký tự đầu tiên là dấu ‘:’. 2. Nhóm message dùng cho việc điều khiển Channel 2.1 Join message Cú Pháp: JOIN {,} [][,] Để có thể tham gia vào channel client phải phát ra JOIN message, server kiểm tra message này nếu cung cấp đúng channel thì cho phép gia nhập vào channel. Ngoài ra server còn kiểm tra client đó có bị trạng thái “active bans”, (đây là trạng thái mà client đó bị cấm quyền kết nối người cấm quyền chính là channel opertor) nếu gặp trạng thái này server không cho gia nhập. Điều kiện để một client có thể tham gia vào channel: User phải được mời (invite) nếu channel đó đang ở trạng thái invite-only(mode +i). Nickname, username, hostname của user phải không ở vào trạng thái “active bans” (trạng thái cấm tham gia). Phải cung cấp đúng password và nickname nếu có thiết lập password cho nickname. Kể từ khi client JOIN thành công chúng sẽ nhận được thông báo, và có thể dùng các command để liên lạc với server của chúng bao gồm: MODE, KICK, PART, QUIT và quan trọng nhất là PRIVMSG/NOTICE message. JOIN message cũng cần phải được phát quảng bá (broadcast) lên mạng để các server có được thông tin về client mới tham gia, nhờ vào thông tin này các server có thể tìm thấy client đó. 2.2 part message Cú pháp: PART {,} Client dùng part message để thoát khỏi channel 2.3 Mode message MODE message phục vụ 2 mục đích trong IRC, nó cho phép user và channel thay đổi mode của mình. Channel mode Cú pháp: MODE {[ + | - ]| o | p | s | i | t | n | b | v } [][][] Trong trường hợp này MODE dùng thay đổi trạng thái channel chỉ có nhóm channel operator mới có quyền sử dụng command này. Các giá trị mode: o - lấy quyền channel operation. p - cờ private. s - cờ secret. i - cờ thông báo channel ở trạng thái invite. b - thiết lập user ban mask. User mode Cú pháp : MODE {[+ | - ]| i | w | s | o |} MODE trong trường hợp này dùng cho user. Một user MODE chỉ có thể được chấp nhận nếu nickname người gởi và đối số phải giống nhau. Lưu ý: một channel operator có thể tự giáng cấp (deopping) của mình bằng cách đưa ra mode -o 2.4 Topic message Cú Pháp: TOPIC [] Topic message dùng thay đổi hoặc xem chủ đề của channel. Nếu đối số được đưa vào lệnh TOPIC message sẽ thay đổi topic cho channel đó, trong trường hợp nó đang ở chế độ cho phép user thay đổi. 2.5 Names message Cú pháp: NAMES []{,} Bằng cách sử dụng NAMES message. User có thể xem danh sách tất cả nickname có thể thấy được (visible) trên channel, đối số được dùng đối với trường hợp này không phải là channel private (mode+p) hoặc secret (mode +s), vì hai mode này không cho phép user truy xuất. Nếu có cung cấp đối số thì nó sẽ trả về danh sách nickname của channel đó, không có thông báo lỗi được trả về nếu sai channelname. Nếu trường hợp không có đối số thì nó sẽ trả về danh sách tất cả các channel và nickname (trong các channel đó). 2.6 List message Cú Pháp: LIST [{,}[]] LIST message dùng để client liệt kê danh sách các channel và topic của chúng. Nếu đối số không được cung cấp thì nó sẽ liệt kê các channel mà client đang tham gia. Đối với Private và secret channel chúng vẫn được liệt kê nhưng không hiển thị chủ đề. 2.7 Invite message Cú Pháp: INVITE INVITE message được dùng để mời/gọi user tham gia vào channel, đối số là nickname của user được mời/gọi. Tuy nhiên không có sự đòi hỏi user phải tham gia vào channel. User được mời phải nằm trong channel ở chế độ +i (invite-only). 2.8 Kick message Cú pháp: KICK [] KICK command dùng để loại bỏ user ra khỏi channel. Chỉ có channel operator mới có quyền dùng lệnh KICK, mỗi server nhận được KICK message nó kiểm tra thật chính xác trước khi nó hủy/loại bỏ user đó ra khỏi channel. Sau khi bị KICK user đó có thể tái kết nối, điều này khác với BANs nếu user bị BANs nó sẽ không được kết nối trở lại cho đến khi người quản trị channel cho phép. 3. Nhóm message truy vấn đến server (server query and command) Server Queries and command là nhóm message được thiết kế để trả về thông tin của tất cả những server mà chúng đang tham gia trong mạng (IRC network), server (được truy vấn) phải trả lời chính xác các truy vấn. Nếu trường hợp server có những thông tin trả về không chính xác lập tức server đó sẽ bị loại ra khỏi mạng cho đến khi nó được phục hồi. 3.1 Version message Cú pháp: VERSION [] Message này dùng để xem version chương trình của server, đối số là server name của server từ xa(remote server) mà client không trực tiếp kết nối đến, nếu không có đối số mặt định là server hiện hành. 3.2 Stats Message Cú pháp: STATS [[]] client dùng STATS message để truy vấn (query) thông tin từ server, thông tin nhận được có thể là con số thống kê nào đó. Hoạt động của lệnh này mang tính độc lập cao mặc dù server phải trả về thông tin truy vấn (query). Khi có STATS message đến server, nó sẽ kiểm tra xem server đích (destination server), sau đó nó chuyển message cho server kế tiếp cho đến khi đến đích. 3.3 Link Message Cú Pháp: LINKS [[]] Với message LINKS, user có thể liệt kê tất cả những server mà biết. Danh sách trả về là các server. Tuy nhiên danh sách này có một số phần bị che dấu đi (mask)ù nếu không có sự che dấu này thì tất cả được hiển thị. 3.4 Time Message Cú pháp: TIME [] TIME message dùng cho client truy vấn (query) về thời gian từ một server nào đó, server được truy vấn sẽ nằm trong đối số , trường hợp đối số không được đưa vào, thì server hiện hành phải trả lời truy vấn đó. 3.5 Connect message Cú pháp: CONNECT [[]] CONNECT command có thể được dùng để buộc server thiết lập một kết nối đến server khác ngay lập tức. CONNECT là lệnh hạn chế nó chỉ được dùng cho người quản trị ngoài ra không có client nào khác sử dụng được. 3.6 Trace Message Cú pháp: TRACE [] Đây là lệnh được dùng để tìm đường đi đến server nào đó (destination server). Mỗi server khi xử lý TRACE, message nó phải báo cho người gởi (sender) bằng cách là đưa ra những message chỉ đường, đồng thời nó gởi tiếp cho server kế tiếp. Tiến trình này được lặp đi lặp lại cho đến đích. Nếu đối số không đưa vào thì mặc định message sẽ đến server kết nối trực tiếp. Lưu ý: trong khoảng giữa server gởi và server nhận, các server trung gian phải gởi trả về message trả lời RPL_TRACELINK. 3.7 Admin Message Cú pháp: ADMIN [] Server dùng ADMIN message để tìm tên người quản lý (administrator) của dùng làm đối số. Nếu không có đối số thì xem server mà nó kết nối trực tiếp đến là đối số. Mỗi server có khả năng chuyển ADMIN message đến server khác, sao cho message đến được server cần đến. Như thế chúng ta thấy rằng một client có thể yêu cầu một server khác gởi thông tin về người quản lý cho mình 3.8 Info Message Cú pháp: INFO [] INFO message do client yêu cầu khác trả về thông tin cho mình, nếu đối số không đưa ra xem như server hiện tại (server kết nối trực tiếp). 4. Nhóm message gởi text (sending message) Mục đích chính IRC protocol là cung cấp cho các client có thể giao tiếp với nhau, để thực hiện việc trao đổi text, ta cần có Private Message và Notice Message để chuyển text message từ client này đến client khác. Sau khi thực hiện quá trình kết nối với server và gia nhập channel thành công sending message sẽ hoạt động để thực hiện mục đích chính cho chat protocol. 4.1 Private Message Cú pháp: PRIVMSG {,} Message này dùng cho client, user có thể gởi private message từ user gởi đến user nhận, và chỉ có user nhận mới được nhận PRIVMSG message. Đối số là nickname của client nhận, có thể là danh sách nickname, channel chúng được phân biệt với nhau bằng dấu phẩy (‘ , ’). 4.2 Notice Message Cú pháp: NOTICE NOTICE message sử dụng tương tự như PRIVSMSG message chỉ có điều khác nhau giữa hai message này là NOTICE message không cần phải có sự đáp lại từ client nhận. Qui định này cũng được áp dụng cho server, như thế server không cần thông báo lỗi cho client. Lý do có việc quy định này là để tránh sự tự động trả lời lặp đi lặp lại giữa server và client. 5. Nhóm message do client truy vấn đến server (user-based query) Đây là nhóm command mà user có thể dùng để tạo truy vấn. Khi dùng nhóm lệnh này user có thể xem được thông tin chi tiết về các user khác với điều kiện các user có thể nhận biết nhau trên mạng. Việc có thể nhận biết nhau tùy thuộc vào mode user đó và trạng thái channel đang dùng. 5.1 Who Query Cú pháp: WHO [[]] WHO message dùng cho client để tạo ra truy vấn, kết quả truy vấn đó là danh sách các user phù hợp với đối số . Nếu không có đối số thì tất cả user (có thể thấy được) được trả về, có thể nhận được danh sách các operator nếu chúng ta sử dụng đối số []hoặc ký tự đại diện (wildcard). Đối số có thể là hostname, server, realname, nickname. 5.2 Who is Query Cú pháp: WHOIS [][,[,…]] Message này dùng để yêu cầu thông tin cụ thể về một user nào đó, như thế có sự khác nhau giữa WHO message và WHOIS message cụ thể là: WHO message: yêu cầu danh sách các user. WHOIS message: yêu cầu thông tin về một user nào đó. Server sẽ trả lời cho message này, trong trường hợp server là server ở xa (remote server) thì nó phải được đưa vào đối số . Lưu ý: Danh sách các nickmask phải cách nhau bởi dấu phẩy. 5.3 Whowas Message Cú pháp: WHOWAS [[]] Khác với WHOIS messge, WHOWAS messge yêu cầu thông tin những user trong quá khứ mà hiện giờ không còn có mặt trong danh sách user active. Để trả lời cho message này server phải tìm kiếm trong danh sách các nickname đã thoát ra khỏi hệ thống mạng (IRC network). Chúng ta thấy trong danh sách đối số có , đối số này là một số nguyên dương, cho biết lấy bao nhiêu lần thông tin về nickname đó, có nghĩa là trong danh sách các nickname đã rời khỏi hệ thống mạng có thể có nhiều mẩu tin nickname giống nhau nhưng khác nhau về thời gian đăng nhập. Khi đó quy định lấy bao nhiêu mẩu tin, nếu trường hợp không có giá trị server sẽ trả về toàn bộ thông tin các nickname mà server có được. 6. Nhóm message khác (miscellaneous message) 6.1 Kill Message Cú pháp: KILL KILL message được dùng khi cần kết thúc kết nối giữa client và server, khi gặp phải hiện tượng Nick Collision (khi có sự trùng lắp của 2 mẩu tin trong danh sách Nickname.) xảy ra, khi đó server sẽ phát ra KILL message, KILL message cũng được channel operator sử dụng là lý do cho KILL message do server đưa ra để giải thích cho hành động của mình. Ghi chú: chỉ có operator mới có thể dùng KILL message để ngưng kết nối của users. 6.2 Ping Message Cú Pháp: PING [ ] PING message dùng để kiểm tra một client còn hoạt động trong hệ thống mạng hay không? PING message được server gởi đến client, khi nhận được message này, client phải đáp lại bằng PONG message, nếu sau một khoảng thời gian nào đó (time out) mà không thấy client trả lời thì xem như kết nối đó bị ngắt, vì thế khi nhận được PING message client phải trả lời bằng PONG message càng sớm càng tốt. Xem trong danh sách đối số ta nhận thấy rằng có đến 2 đối số và điều đó có nghĩa là PING message gởi đến cả hai và , tuy nhiên server nhận được message nó không đáp lại mà dựa vào client kết nối với nó để thông báo kết nối vẫn còn liên thông. Từ đây chúng ta rút ra được kết luận là: Server không đáp lại PING message mà nó nhờ client đáp lại. 6.3 Pong Message Cú Pháp: PONG [] PONG là message được client dùng để đáp lại PING message là đối số cho biết client nào đáp lại PING message. 6.4 Error Message Cú pháp: ERROR ERROR message dùng cho server thông báo lỗi cho operator. Nó có thể được gởi từ server này đến server khác. Message này chỉ dùng để thông báo lỗi liên kết giữa server với nhau, nếu server nhận được ERROR message từ server khác thì nó không cần thông báo cho server khác biết, đều này có thể hiểu rằng server gởi ERROR message đến server nhận, khi đó message chỉ chuyển cho operator của nó. Một khi cần thông báo lỗi đến client operator nó phải được đóng gói thông qua lệnh NOTICE message để chuyển, tất nhiên client operator không cần phải trả lời cho message này. 7. Nhóm message tùy chọn(option message) 7.1 Away Message Cú pháp: AWAY[message] Với AWAY message user có thể thiết lập cơ chế trả lời tự động cho mỗi PRIVMSG message, nội dung trả lời được lưu trữ trong chuỗi [message]. Sau khi thiết lập xong chế độ này việc trả lời tự động sẽ được gởi từ server đến client phát ra PRIVMSG message, server gởi chính là server kết nối trực tiếp với client phát ra PRIVMSG message. Nếu AWAY message không có [message] thì xem như chuỗi trả lời bị xóa bỏ. 7.2 Rehast Message Cú pháp: REHASH Server có một tập tin cấu hình để thiết lập các tham số. Lệnh này do operator thi hành bắt buộc server phải đọc lại và xử lý lại tập tin cấu hình của server đó. 7.3 Restart Message Cú pháp: RESTART Đây là message dùng cho channel operator buộc server phải khởi động (restart) lại hệ thống. 7.4 Summon Message Cú pháp: SUMMON [] Mời một client có chương trình server hiện đã có cài đặt trên host gia nhập hệ thống IRC Nếu không có đối số thì nó xem server hiện hành là server đích, khi đó các client kết nối trực tiếp đến server đó sẽ được mời. 7.5 Users Message Cú Pháp: USER[] USER message dùng để trả về danh sách của các user đã login vào tương tự như WHO message. Tuy nhiên có một số client không thể dùng message này được trên server của họ, có thể vì lý do bảo mật (security reasion). Nếu user không thể dùng message này một reply được phát ra. 7.6 Operwall Message Cú pháp: WALLOPS Khi WALLOPS hoạt động nó sẽ gởi đến tất cả các operator hiện có trên mạng. 7.7 Userhost Message Cú pháp: USERHOST{} USERHOST yêu cầu trả về thông tin của client có làm đối số, danh sách có thể lên đến 5 đối số khi đó thông tin về mỗi nickname sẽ được trả về cho client. Lưu ý : mỗi thông tin trả về được phân cách bằng ký tự khoảng cách. 7.8 Ison Message Cú pháp: ISON{} ISON message được thiết lập để trả về thông tin về hiện thời trên IRC một cách hiệu quả nhất. Có thể có nhiều đối số được đưa vào nhưng chúng phải cách nhau bằng ký tự khoản trắng. Chương II: Tìm hiểu về Mail Email là một phương tiện truyền thông tiện lợi nhanh chóng, rẻ tiền, được sử dụng rộng rãi trên Internet. Khi nhắc đến Internet thì người ta không thể không nói đến Email. Sau đây, chúng ta hãy xét đến một số khái niệm về mạng Email. I/ Tìm hiểu chung về Mail. 1) Các thành phần của một hệ thống Email: Một hệ thống Email bao gồm các phần như sau: Người gởi và người nhận. Phần giao tiếp với hệ thống Email, đó chính là chương trình Email mà chúng ta sử dụng. Hệ thống mạng Email gồm có: Một vùng đệm dùng để chứa các message trước khi được gởi đi. Một chương trình client. Một chương trình Server. Các MailBox dùng để chứa các thư nhận được. Trong đa số hệ thống mạng Email hiện nay, công cụ giao tiếp của user với hệ thống Email thường gắn với các chương trình Client. MailBox chính là địa chỉ hộp thư của user, nơi chứa đựng dữ liệu của Email. 2) Các thành phần của một hệ thống Internet Mail: User Agent (UA) thay thế cho chương trình Email và các bộ phận MTA thay thế cho các quá trình Server, Client. Người sử dụng tương tác với chương trình User Agent, mà nó thay thế cho bạn trong việc tương tác với kho chứa dữ liệu Email (hay chính là MTA). User Agent sẽ che chắn cho bạn khỏi phải tương tác với một mớ các hệ thống Email khác nhau. Cũng tương tự MTA sẽ che chắn hệ thống Email không phải tương tác với các cơ quan đại diện của người sử dụng (UA) hay các MTA khác. Điều này giúp cho hệ thống Email của chúng ta trở nên thân thiện, gần gũi hơn với người sử dụng - và đó cũng chính là mục đích chính của các chương trình Mail khác nhau. 3) Cấu trúc của một bức mail: Về cơ bản, một bức Mail bao gồm 3 phần chính: Phần phong bì: Mô tả thông tin về người gởi và người nhận. Do hệ thống tạo ra. Phần tiêu đề (header): chứa đựng các thông tin về người gởi, người nhận, chủ đề bức Mail, địa chỉ hồi âm .v.v.. Các thông tin này, một số được người sử dụng cung cấp khi gởi Mail, một số khác được chương trình Mail thêm vào, và số còn lại do Hệ thống điền thêm. Phần nội dung (body): chứa đựng nội dung của bức Mail, là nội dung được tạo ra bởi trình soạn thảo Editor của chương trình Mail. Sau đây là chi tiết của từng phần: Phần phong bì (Envelope): Phần này do các MTA tạo ra và sử dụng, nó chứa các thông tin để chuyển nhận email như địa chỉ của nơi nhận, địa chỉ của nơi gửi. Hay nói cách khác, giao thức SMTP sẽ quy định thông tin của phong bì, các hệ thống Email cần những thông tin này để chuyển dữ liệu từ một máy tính này sang một máy tính khác. Phần tiêu đề (header): Phần này cung cấp những thông tin tổng quát về Email như người nhận, người gửi, ngày giờ nhận... Cấu tạo gồm nhiều trường (field) cấu trúc mỗi trường là một dòng văn bản ASCII chuẩn 7 bit như sau: : . Sau đây là một số trường thông dụng và ý nghĩa của nó : - Date: chỉ ngày giờ nhận mail. - From: chỉ người gởi. - To: chỉ người nhận. - Cc: chỉ người những nhận bản copy của mail. - Bcc: chỉ ra những người nhận bản copy của bức mail, nhưng từng người không biết những người nào sẽ nhận bức thư này - Return-path: chứa các thông tin để người nhận có thể trả lời lại (thường nó chính là địa chỉ người gởi). - Subject: chủ đề của nội dung Email. Các trường trên là các trường chuẩn do giao thức SMTP quy định, ngoài ra trong phần header cũng có thể có thêm một số trường khác do chương trình Email tạo ra nhằm quản lý các email mà chúng tạo. Các trường này được bắt đầu bằng ký tự X- và thông tin theo sau là cũng giống như ta thấy trên một trường chuẩn. Phần nội dung (body): Để phân biệt phần tiêu đề và phần nội dung của bức Mail, người ta qui ước đặt ranh giới là một dòng trắng (chuỗi ký tự "\r\n"). Kết thúc của phần nội dung là chuỗi ký tự kết thúc Mail: "\r\n.\r\n". Như vậy nội dung bức Mail nằm trong khoảng giữa dòng trắng đầu tiên và ký tự kết thúc Mail, và trong phần nội dung của bức Mail không được phép tồn tại chuỗi ký tự kết thúc Mail. Mặt khác do môi trường truyền thông là mạng Internet nên các ký tự cấu thành phần body của bức Mail cũng phải là các ký tự ASCII chuẩn. II/ Các chuẩn được sử dụng trong hệ thống Mail Có 2 chuẩn về Mail quan trọng nhất và được sử dụng nhiều nhất từ trước đến nay là X.400 và SMTP (Simple Mail Transfer Protocol). SMTP thường đi kèm với chuẩn POP3 và do hạn chế của SMTP mà ngày nay người ta dùng chuẩn mở rộng của nó là ESMTP (Extended SMTP). Mục đích chính của X.400 là cho phép các mail có thể được truyền nhận thông qua các loại mạng khác nhau bất chấp cấu hình phần cứng, hệ điều hành mạng, giao thức truyền dẫn được dùng. Còn mục đích của chuẩn SMTP miêu tả cách điều khiển các thông điệp trên mạng Internet. Điều quan trọng của chuẩn SMTP là giả định máy nhận phải dùng giao thức SMTP gởi Mail cho 1 Server luôn luôn hoạt động. Sau đó, người nhận sẽ đến lấy Mail của họ từ Server khi nào họ muốn dùng giao thức POP (Post Office Protocol), ngày nay POP được cải tiến thành POP3 (Post Officce Protocol vertion 3). Các giao thức Mail thông dụng : chuẩn X.400, chuẩn MAIP, SMTP (ESMTP), POP3 . Ở đây chỉ trình bày chi tiết về POP3 và SMTP. 1. Giao thức SMTP(Simple Mail Transfer Protocol ) Mục đích của giao thức SMTP là truyền mail một cách tin cậy và hiệu quả. Giao thức SMTP không phụ thuộc vào bất kỳ hệ thống đặc biệt nào và nó chỉ yêu cầu trật tự của dữ liệu truyền trên kênh truyền đảm bảo tính tin cậy. 1.1. Mô hình SMTP SMTP được thiết kế dựa trên mô hình giao tiếp sau: + Sender- SMTP thiết lập một kênh hai đường vận chuyển đến một receiver- SMTP . + Receiver- SMTP có thể là đích đến cuối cùng hay một trung gian. Những lệnh SMTP được sinh ra bởi Sender-SMTP gửi đến Receiver- SMTP. Những reply SMTP được gửi từ Receiver- SMTP đến Sender- SMTP trong sự đáp ứng cho những lệnh đó. Khi một kênh chuyển giao được thiết lập sender-SMTP gửi đi một lệnh Mail biểu thị cho Sender của mail đó. Nếu Receiver-SMTP có thể chấp nhận mail, nó trả lời với một OK reply. Sau đó Sender-SMTP gửi một lệnh RCPT nhận diện Receiver mail nếu Receiver-SMTP có thể chấp nhận mail nó trả lời với một OK reply nếu không nó sẽ lời với một reply bác bỏ receiver đó (nhưng không phải toàn bộ sự giao dịch đó). Sender- SMTP và Receiver- SMTP có thể điều đình với vài recipient, khi những recipient đã được dàn xếp Sender-SMTP gửi mail data kết thúc với một chuỗi đặc biệt nếu receiver xử lý Mail Data thành công nó trả lời với một OK reply. Cuộc hội thoại một cách chủ ý lock –step (one-at-a-time). Sender SMTP Receiver SMTP User File System FILE System SMTP Commands/Replies and Mail Sender-SMTP Receiver -SMTP Sơ đồ: mô hình cho cách dùng SMTP. SMTP cung cấp những cơ chế giao chuyển Mail một cách trực tiếp từ host của user gửi đến host của user nhận khi cả hai host được kết nối đến cùng dịch vụ giao chuyển hay qua nhiều SMTP-Sever tiếp vận khi host xuất phát hay đích đến không được kết nối đến cùng dịch vụ chuyển giao. Để có thể cung cấp khả năng tiếp vận SMTP-Sever phải được cung cấp tên của host đến cùng chẳng hạn như hạn của Mailhost đến . Khi cùng một message được gửi cho nhiều recipient SMTP khuyến khích chuyển giao chỉ một bản sao của data cho tất cả các Receiver ở cùng một host đích. Những command và reply mail có những cú pháp khắc khe. Những reply cũng có một mã số. Các command và reply không phân biệt kiểu chữ hoa hay thường. Lưu ý, điều này không đúng với tên của User mailbox. Cho một số host tên của user có phân biệt kiểu chữ, SMTP phải thi hành đầy đủ việc nhận kiểu chữ và giữ gìn kiểu chữ của những user name như chúng đã xuất hiện trong những đối số của mailbox. Host names không phân biệt kiểu chữ. 1.2. SMTP Mail: Có 3 bước cho sự giao dịch SMTP mail. Giao dịch được bắt đầu với yêu cầu Mail mang sự nhận diện sender, tiếp theo sau là một chuỗi của một hay nhiều lệnh RCPT trao những thông tin của receiver, sau đó một lệnh DATA cho mail data.Và cuối cùng là phần chỉ định kết thúc mail data xác nhận giao dịch đó. Bước đầu tiên trong thủ tục là lệnh MAIL... chứa mailbox nguồn MAIL FROM : Lệnh này báo cho receiver biết một giao dịch mail mới sẽ bắt đầu và để reset tất cả các bảng trạng thái và các buffer của nó bao gồm tất cả recipient hay mail data. Nó phát ra reverse-path có thể được dùng để báo lỗi. Nếu được chấp nhận receiver-SMTP trả về một reply 250 OK. có thể chứa nhiều hơn một mailbox. là một lộ trình nguồn trở về liệt kê các host và mailbox nguồn. Host đầu tiên trong reverse-path sẽ là host giữ lệnh này. Bước thứ hai trong thủ tục này là lệnh RCPT RCPT To : Lệnh này phát đi một forward-path nhận diện recipient. Nếu được chấp nhận receiver-SMTP trả về một reply 250 OK. Và lưu lại forward-path. Nếu recipient không nhận biết thì receiver trả về reply 550 Failure. Bước thứ hai của thủ tục này có thể lặp lại nhiều lần. Forward-path có thể chứa nhiều hơn một mailbox. Forward-path là lộ trình nguồn liệt kê các host và mailbox đích. Host đầu tiên trong sẽ là host nhận lệnh này. Bước thứ ba trong thủ tục là lệnh DATA DATA Nếu chấp nhận Receiver-SMTP trả về một reply 354 và coi tất cả các dòng nối tiếp đó là message text. Khi văn bản cuối cùng được nhận và lưu trữ Receiver-SMTP gửi một reply 250 OK. Kể từ mail data được gửi trên kênh chuyển giao, điểm kết thúc của mail data phải được chỉ định để hội thoại command và reply có thể bắt đầu trở lại. SMTP chỉ định kết thúc của mail data bằng cách gửi một dòng chứa chỉ một dấu chấm. Chú ý rằng mail data bao gồm những mục (item) memo header chẳng hạn như Subject, To, Cc, From. Phần chỉ định kết thúc của mail data cũng xác nhận sự giao dịch mail và báo cho Receiver-SMTP biết để xử lý việc lưu trữ recipient và mail data ngay lúc đó. Nếu được chấp nhận Receiver-SMTP trả về một reply 250 OK. Lệnh DATA sẽ chỉ fail nếu giao dịch mail không hoàn thành (ví dụ không có receiver) hoặc nếu tài nguyên không có hiệu lực. 1.3 Đặc tả cho smtp: a) Các lệnh của SMTP: Ýnghĩa các lệnh: Những lệnh SMTP định nghĩa sự truyền mail hay chức năng của hệ thống mail được yêu cầu bởi user. Những lệnh SMTP là những chuỗi ký tự kết thúc bằng . Bản thân mã lệnh là những ký tự chữ (alphabetic) kết thúc bởi nếu có những tham số theo sau và nếu không có thì . Cú pháp của những mailbox phải tuân theo những qui ước của receiver. Một phiên giao dịch mail chứa đựng một vài đối tượng dữ liệu, được truyền như là những đối số cho các lệnh khác nhau. Reverse-path là đối số của lệnh MAIL. Forward-path là đối số của lệnh RCPT. Và mail data là đối số của lệnh DATA. Những đối số hay những đối tượng dữ liệu này được truyền đi và duy trì cho đến khi xác nhận truyền xong bởi sự chỉ định kết thúc của mail data. Mô hình hiện thực cho cách làm này là những buffer riêng biệt được cung cấp để lưu trữ kiểu của đối tượng dữ liệu, đó là các buffer : reverse-path, forward-path, và mail data buffer. Những lệnh xác định tạo ra thông tin được gắn vào một buffer xác dịnh, hoặc xóa đi một hay một số buffer nào đó. HELLO (HELO) Lệnh này được dùng để xác định ra ai là người gởi mail. Vùng đối số chứa host name của bên gởi. Bên nhận định danh cho nó đối với sender thông qua việc bắt tay trả lời kết nối. Với lệnh này và sự trả lời OK để xác định rằng cả sender và reciever đang ở trạng thái khởi đầu, tất cả các bảng trạng thái và buffer đã được xóa sạch. MAIL Lệnh này được dùng để khởi tạo quá trình trao đổi mail mà ở đó mail data được phân phát tới một hay nhiều mailbox. Vùng đối số của lệnh có chứa reverse-path. Reverse-pat bao gồm một danh sách tùy ý các host và mailbx của sender. Khi danh sách của host được chỉ ra, nó là lộ trình nguồn trở về (reverse source route) và chỉ ra các host mà mail sẽ được truyền tiếp vận qua các host trong danh sách đó. Danh sách này được sử dụng như là một lộ trình nguồn để trả lời thông báo không phân phát được cho sender. Mỗi khi truyền tiếp vận host sẽ thêm vào phần định danh của nó vào đầu danh sách, nó phải sử dụng tên của nó khi đã được biết trong IPCE nơi mà nó đang truyền tiếp vận mail hơn là IPCE mà mail đã tới (nếu chúng khác nhau). RECIPIENT (RCPT) Lệnh này được sử dụng để định ra một người nhận mail; nhiều nguời nhận (cùng một nội dung mail) sẽ được xác định bằng cách gởi nhiều lệnh này. DATA Reciever sẽ xử lý những dòng theo sau lệnh khi mail data đến từ sender. Lệnh này tạo ra mail data để đặt vào mail data buffer. Mail data có thể chứa bất kỳ ký tự nào trong bộ mã ASCII và được kết thúc bởi một dòng mà nó chỉ chứa một dấu chấm “ .”. SEND Lệnh này được dùng để khởi tạo sự truyền mail mà ở đó maildata sẽ được truyền đi tới một hay nhiều terminal. Vùng đối số chứa phần reverse-path. lệnh thực thi thành công khi message được phân phát tới terminal. SEND OR MAIL (SOML) Lệnh này được sử dụng để khởi tạo sự truyền mail mà ở đó mail data một hay nhiều terminal hoặc các mailbox. Đối với người nhận, mail data được phân phát tới terminal của người nhận nếu người nhận có tích cực, trái lại, là mailbox của người nhận. Lệnh này thành công khi message được phân phát tới terminal hoặc là mailbox. SEND AND MAIL (SAML) Lệnh này được sử dụng để khởi tạo sự truyền mail mà ở đó mail data một hay nhiều terminal hoặc các mailbox. Đối với người nhận, mail data được phân phát tới terminal của người nhận nếu người nhận có tích cực, và đối với mọi người nhận mail sẽ tới mailbox của những người nhận đó. Vùng đối số chứa đựng một reverse-path. Lệnh này thành công khi message được phân phát tới mailbox. RESET (RSET) Lệnh này xác định sự truyền mail hiện tại đã bị hủy bỏ. Các sender, recipient, mail data đã lưu sẽ bị huỷ bỏ và tất cả các bảng trạng thái, các buffer bị xoá. Receiver phải gửi một reply OK. VERIFY (VRFY) Lệnh này yêu cầu receiver xác nhận đối số là định danh một user. Nếu nó là một user name, full name của user đó (nếu receiver biết) và mailbox đặc tả đầy đủ được trả về. Lệnh này không ảnh hưởng đến reverse-path buffer, forward-path buffer và data mail buffer. EXPAND (EXPN) Lệnh này yêu cầu receiver xác nhận đối số là một mailing list (danh sách địa chỉ) và trả về một thành phần trong danh sách đó. Full name của các user (nếu biết) và những mailbox đã xác định đầy đủ được trả về trong một reply gồm nhiều dòng. Lệnh này không ảnh hưởng đến reverse-path buffer, forward-path buffer và data mail buffer. HELP Lệnh này cho receiver những thông tin giúp đỡ cho sender. Lệnh này có thể nhận một đối số (có thể là tên lệnh) và trả về thông tin chi tiết. Lệnh này không ảnh hưởng đến reverse-path buffer, forward-path buffer và data mail buffer. NOOP Lệnh này không ảnh hưởng các tham số hay các lệnh được đưa vào trước nó, nó đặc tả không có một hành dộng nào khác hơn là receiver gửi một reply OK. Lệnh này không ảnh hưởng đến reverse-path buffer, forward-path buffer và data mail buffer. QUIT Lệnh này định rõ receiver phải gửi một reply OK và sau đó đóng kênh truyền. Receiver sẽ không đóng kênh truyền cho đến khi nó nhận và trả lời cho lệnh QUIT (ngay cả nếu có một lỗi xãy ra). Sender sẽ không đóng kênh truyền cho đến khi nó gửi một lệnh QUIT và nhận reply đó (ngay cả nếu có một lỗi trả lời cho lệnh trước đó). Nếu mà kết nối bị đóng trước thời gian mong muốn receiver sẽ làm việc như nếu vừa nhận được một lệnh RSET (bỏ tất cả các giao dịch đang treo mà chưa làm, nhưng không “undo” những đã truyền hoàn tất trước đó) sender sẽ hành động ngay khi lệnh hay quá trình truyền đó trong quy trình nhận được một lỗi tạm thời. TURN Lệnh này xác định receiver phải gửi một trong hai reply sau: (1) reply OK và sau đó nhận vai trò của một sender-SMTP, hay (2) gửi một reply từ chối và giữ lại vai trò một receiver-SMTP. Nếu program-A hiện tại là một sender-SMTP và nó gửi một lệnh TURN và nhận một reply OK (250) thì program-A trở thành receiver-SMTP sau đó program-A sẽ trong trạng thái khởi động ngay khi kênh truyền đã được mở, và sau đó nó gởi lời chào là hỏi dịch vụ đã sẵn sàng (220). Nếu chương trình B hiện tại là reciever và nó nhận được lệnh TURN và nó trả lời OK thì B trở thành sender. b) Các reply của SMTP: Sự trả lời cho những lệnh của SMTP được đặt ra để đảm bảo cho sự đồng bộ cho các yêu cầu và những hoạt động trong qui trình truyền mail, và để bảo đảm rằng sender-SMTP luôn luôn biết trạng thái của reciever-SMTP. Mỗi lệnh SMTP phải tạo ra chính xác một reply. Một reply SMTP bao gồm một số ba chữ số (được truyền như ba ký tự chữ số) và theo sau là một số văn bản (text). Số đó được sử dụng một cách tự động để xác định trạng thái đưa vào kế tiếp. Text ở trên là dành cho người sử dụng. Ba chữ số đó được ấn định chứa đầy đủ thông tin được mã hoá mà sender-SMTP không cần kiểm tra text đó và có thể huỷ bỏ hay chuyển nó qua một user thích hợp. Đặc biệt text này có thể phụ thuộc vào receiver và vào ngữ cảnh, vì vậy có sự giống nhau trong sự phân biệt text cho từng mã reply. 2) Giao thức pop3 Post Office Protocol Version 3 (Pop3) là một giao thức chuẩn trên Internet cho phép một một workstation có thể truy xuất động đến một maildrop trên một server từ xa. Có nghĩa là Pop3 được dùng để cho phép workstation lấy mail mà server đang giữ nó. 2.1 Các thao tác cơ bản: Port chuẩn dành cho dịch vụ Pop3 đươc qui uớc là TCP port 110. Pop3 server sẽ khởi động và lắng nghe trên port này. Một client muốn sử dụng các dịch vụ của Pop3 thì nó phải thiết lập một kết nối tới Pop3 server. Khi kết nối được thiết lập thì Pop3 server sẽ gởi tới client một lời chào. Sau đó, Pop3 Client và Pop3 Server sau đó trao đổi các request và reply cho đến khi kết nối được đóng hay loại bỏ. Các lệnh trong Pop3 không phân biệt chữ thường và chữ hoa, bao gồm một tập từ khóa (chiều dài từ 3 đến 4 ký tự), có thể có hoặc không có đối số theo sau (chiều dài của đối số có thể lên đến 40 ký tự). Các từ khóa và đối số phân cách nhau bởi một ký tự trắng đơn, và không phải là các ký tự đặc biệt. Các reply trong Pop3 bao gồm phần chỉ định trạng thái và từ khóa có thể có các thông tin hổ trợ theo sau. Chiều dài của reply có thể lên tới 512 ký tự, kết thúc bằng cặp CRLF. Có hai loại chỉ định trạng thái là: “+OK” và “-ERR”. Server phải gởi các chỉ định trạng thái ở dạng chữ hoa. Reply cho các lệnh có thể bao gồm nhiều dòng. Sau khi dòng đầu tiên và cặp ký tự CRLF được gởi đi, các dòng thêm vào được gởi đi, mỗi dòng kết thúc bằng một cặp CRLF. Dòng cuối là ký tự “.” và cặp ký tự CRLF. Nếu có dòng nào bắt đầu bằng ký tự “.” thì phải kiểm tra xem có phải là cặp ký tự kết thúc CRLF. Một Pop3 session sẽ phải trải qua các trạng thái: xác nhận (Authorization), giao dịch (transaction) và trạng thái cập nhật (Update). Trong trạng thái xác nhận, client phải thông báo cho server biết nó là ai. Khi server đã xác nhận được client, session sẽ đi vào trạng thái giao dịch. Trong trạng thái này, client hoạt động bằng cách gởi các request tới server. Khi client gởi lệnh “QUIT”, session sẽ đi vào trạng thái cập nhật (Update). Trong trạng thái này, Pop3 server giải phóng các tài nguyên và gởi lời tạm biệt. Sau đó kết nối TCP đóng lại. Các reply của Pop3 Server cho Pop3 client sẽ là “-ERR” nếu lệnh không nhận ra được bởi Pop3 server, hoặc không thực hiện được, hoặc sai cú pháp, hoặc sai trạng thái. Một Pop3 server có một khoảng thời gian time out. Khi xảy ra time out, session không đi vào trạng thái cập nhật (Update) mà server sẽ tự đóng kết nối TCP mà không xóa bất kỳ message nào hay gởi đáp ứng cho client. 2.2 Các trạng thái của pop3: Một khi kết nối TCP được mở ra bởi một Pop3 client. Pop3 server sẽ gởi lại cho Pop3 client một lời chào. a) Trạng thái xác nhận (authorization): Sau khi Pop3 server gởi lời chào, session sẽ đi vào trạng thái xác nhận (authorization). Lúc này, Pop3 client phải định danh và xác nhận nó với Pop3 server. Để thực hiện việc này, client phải sử dụng kết hợp các lệnh USER và PASS. Đầu tiên, client sẽ gởi lệnh “USER username”, nếu Pop3 server trả lời với chỉ thị trạng thái “-ERR” thì client có thể đưa ra một lệnh xác nhận mới hay có thể đưa ra lệnh “QUIT”. Nếu Pop3 server trả lời với chỉ thị trạng thái “+OK”, thì client có thể gởi tiếp lệnh “PASS password” để hoàn tất sự xác nhận hoặc gởi lệnh “QUIT” để kết thúc session. Khi client phát ra một lệnh “PASS”, POP3 server dùng cặp đối số từ lệnh USER và PASS để xác định nếu đúng client sẽ cho truy xuất đến maildrop thích hợp. Sau khi trải qua quá trình xác nhận, Pop3 server sẽ cho phép client truy xuất tới những mailbox thích hợp. Lúc này, Pop3 server sẽ tạo ra một khóa truy xuất loại trừ trên maildrop để đảm bảo cho message không bị sửa đổi hay bị xóa trước khi session đi vào trạng thái cập nhật (Update). Nếu thành công, Pop3 server sẽ trả lời với chỉ thị trạng thái “+OK” và session sẽ đi vào trạng thái giao dịch (transaction) mà không có message bị đánh dấu xóa. Nếu maildrop không mở được vì một lý do nào đó (ví dụ: sai khóa, client bị từ chối truy xuất tới maildrop này), Pop3 server sẽ trả lời với chỉ thị trạng thái “-ERR” và server sẽ đóng kết nối. Nếu kết nối không bị đóng thì client có thể gởi lệnh xác nhận mới và bắt đầu trở lại hoặc có thể phát ra lệnh “QUIT”. Sau khi Pop3 server mở được maildrop, nó gán số thứ tự cho mỗi message và biểu thị kích thước messge theo byte. b) Trạng thái giao dịch (transaction): Sau khi Pop3 server đã xác nhận thành công client, và mở cho nó một maildrop thích hợp. Session sẽ bước vào trạng thái giao dịch (transaction). Lúc này, Pop3 client có thể gởi các request cho Pop3 server (các request có thể được gởi nhiều lần, tức là có thể lặp lại), và cứ sau mỗi request thì Pop3 server sẽ phản hồi lại cho Pop3 client một reply. Cuối cùng, nếu client phát ra lệnh “QUIT” thì session sẽ đi vào trạng thái cập nhật (Update). c) Trạng thái cập nhật (Update): Khi client phát ra lệnh “QUIT” từ trạng thái giao dịch (transaction), session sẽ đi vào trạng thái cập nhật (Update). Nếu client phát ra lệnh “QUIT” từ trạng thái xác nhận (authorization), session sẽ kết thúc nhưng không đi vào trạng thái cập nhật. Nếu session kết thúc vì các lý do khác sau đó một lệnh “QUIT” được phát ra từ client, session sẽ không đi vào trạng thái cập nhật (Update) và phải không xóa một message nào từ maildrop. 2.3 Tóm tắt các lệnh của pop3: a) Các lệnh có tác dụng trong quá trình xác nhận (authorization): USER username: + Đối số username là một chuổi định danh một mailbox, chỉ có ý nghĩa đối với server. + Trả lời: +OK tên mailbox có hiệu lực. -ERR không chấp nhận tên mailbox. PASS string: + Đối số là một password cho mailbox hay server. + Trả lời: +OK khóa maildrop và sẵn sàng. -ERR password không hiệu lực. -ERR không được phép khóa maildrop. QUIT: + Không có đối số. + Trả lời: +OK. b) Các lệnh có tác dụng trong qúa trình giao dịch (transaction): STAT: + Không có đối số. + Trả lời: +OK nn mm. “+OK” theo sau là khoảng trắng đơn, tiếp theo là nn: số message, khoảng trắng đơn, mm: kích thước của maildrop tính theo byte. + Các message được đánh dấu xóa không được đếm trong tổng số. LIST [msg]: + Đối số: số thứ tự của message, có thể không tham khảo tới các message đã được đánh dấu xóa. + Trả lời: +OK scan listing follow. -ERR nosuch message. Một scan listing bao gồm số thứ tự message (message number) của message đó, theo sau là khoảng trắng đơn, và kích thước chính xác của message đó tính theo byte. RETR msg: + Đối số: số thứ tự của message, có thể không tham khảo tới các message đã được đánh dấu xóa. + Trả lời: +OK message follows -ERR no such message Trả lời của lệnh RETR là multi-line. DELE msg: + Đối số: số thứ tự của message, có thể không tham khảo tới các message đã được đánh dấu xóa. + Trả lời: +OK message deleted -ERR no such message Pop3 server sẽ đánh dấu xóa các message này. Tuy nhiên, quá trình xóa thật sự sẽ diễn ra ở trạng thái cập nhật (Update). NOOP: + Không có đối số. + Trả lời: +OK Pop3 server không làm gì hết, chỉ hồi âm lại cho client với trả lời: “+OK”. RSET: + Không có đối số. + Trả lời: +OK. Phục hồi lại các message đã bị đánh dấu xóa bởi Pop3 server. c) Các lệnh có tác dụng trong qúa trình cập nhật (Update): QUIT: + Không có đối số. + Trả lời: +OK. Phần III: Phần phân tích, thiết kế và Xây dựng ứng dụng minh hoạ. Chương I: Phân tích yêu cầu. Mục đích: Xây dựng một Website có thể giúp cho người sử dụng thư giãn trong những giờ phút căng thẳng. Yêu cầu: Website giải trí có các chức năng sau: Mail: phải cho phép được đăng ký sử dụng một địa chỉ Mail với đầy đủ các chức năng của một Account Mail. Chat: cho phép người sử dụng có thể Chat được với nhau trong trang Web này. Hình ảnh, nhạc và Truyện: phải tổ chức được các phần này trong trang Web và phải cập nhật lại được nghĩa là trang Web phải tổ chức theo dạng web động, không được tổ chức theo dạng web tĩnh. 1) Yêu cầu đối với người quản trị. Quản lý được tất cả dữ liệu có trong Website này. Mail: quản lý việc đăng ký địa chỉ mail, xác định những địa chỉ không sử dụng và xóa đi. Hình ảnh, nhạc và truyện: cập nhật lại cơ sở dữ liệu của trang này. 2) Yêu cầu đối với người sử dụng. Được phép đăng ký địa chỉ mail. Được phép xem truyện, nghe nhạc, xem hình và sử dụng chương trình Chat trong trang này. Chương II: Thiết kế và Xây dựng chưng trình ứng dụng minh họa. Trang Chủ. Website giải trí là một trang web giúp cho người truy cập vào có thể thư giãn. Để làm được điều đó, trang web phải có giao diện dễ nhìn, cấu trúc phải thuận tiện và đáp ứng các chức năng giải trí. Sơ đồ hoạt động của website Trang chủ Trang Quản Trị Trang Nhạc Trang Truyện Trang Chat Trang Hình Ảnh Trang Mail Sau đây, chúng ta sẽ xem xét chi tiết từng trang cụ thể. Trang Quản Trị. Đây là trang quản lý tất cả các cơ sở dữ liệu của trang web này. Trang này được giành cho người quản trị trang web, người này sẽ có toàn quyền trên cơ sở dữ liệu, có thể chỉnh xửa dữ liệu có trong trang như là thay đổi nhạc, truyện, hình ảnh và thậm chí cả các địa chỉ mail đã đăng ký sử dụng trong trang Web này. Khi thấy một phần nào không phù hợp với lĩnh vực giải trí thì người quản trị có nghĩa vụ phải xóa khỏi trang Web ngay. Dưới đây là sơ đồ hoạt động của trang Admin và hình ảnh của trang Admin: Nhập tên và Password người quản trị Kiểm tra Username và Password Trang chủ Trang quản trị Nhạc Truyện và Thơ Hình Ảnh Mail Sơ đồ hoạt động của trang Admin Người quản trị sẽ nhập Username và Password của mình vào và nhấn nút Submit. Chương trình sẽ kiểm tra Username và Password này xem có đúng không. Nếu không đúng thì sẽ nhảy ra trang chủ. Nếu đúng thì sẽ vào trang quản trị. Khi đó người quản trị chọn trang mình muốn chỉnh xửa và tiến hành những việc cần thiết trong trang này. Hình của trang Admin trong Website giải trí này: Ở trên là hình ảnh của trang quản trị. Về phần chi tiết của trang này, chúng ta sẽ xem xét chi tiết hơn thông qua mỗi trang cụ thể. Trang Nhạc Trang này gồm có lời và phần nhạc nén mp3, cho phép người sử dụng tìm kiếm lời của bài hát cũng như dowload nhạc về hoặc có thể nghe nhạc trực tiếp trên mạng. Dữ liệu trong trang được tổ chức chặt chẽ, rõ ràng và luôn được cập nhật mới. Các lời của bài hát trong trang này được sắp xếp theo thứ tự ABC, và cũng có thể được liệt kê theo tên tác giả. Khi có một bài hát mới nào đó được cập nhật vào thì sẽ được đưa vào danh sách những bài hát mới được cập nhật và sẽ hiển thị lên cho người sử dụng biết. Trang web cũng liệt kê một số bài có số người truy cập nhiều nhất. Sau đây là hình ảnh giao diện của trang nhạc: 1) Về cơ sở dữ liệu Mô hình quan hệ: Cài đặt các thực thể trong chương trình: a/ Thực thể QUẢN LÝ USER Thuộc tính Diễn giải Kiểu Ràng buộc IDQLUSER Mã quản lý User bigint Khoá chính TENUSER Tên của User Varchar EMAIL Email của User Varchar TENBAIHAT Tên bài hát Varchar NHACSI Nhạc sĩ sáng tác bài hát trên Varchar LOIBAIHAT Lời của bài hát varchar b/ Thực thể LOINHAC Thuộc tính Diễn giải Kiểu Ràng buộc IDLOINHAC Mã lới nhạc bigint Khoá chính TENBAIHAT Tên bài hát Varchar NHACSI Nhạc sĩ sáng tác Varchar NGAY Ngày cập nhật Datetime LOIBAIHAT Lời bài hát Varchar SOLANDOC Số lần lời nhạc được đọc Bigint Bắt đầu là 0 d/ Thực thể USER Thuộc tính Diễn giải Kiểu Ràng buộc IDUSER Mã User bigint Khóa chính IDLOINHAC Mã lời nhạc bigint Khóa ngoại TENUSER Tên User varchar EMAIL Email của User varchar e/ Thực thể THELOAIMUSIC Thuộc tính Diễn giải Kiểu Ràng buộc IDTHELOAI Mã thể loai Nhạc Bigint Khóa chính TENTHELOAI Tên thể loại Varchar f/ Thực thể MUSIC Thuộc tính Diễn giải Kiểu Ràng buộc IDMUSIC Mã bài nhạc Bigint Khóa chính IDTHELOAI Mã thể loại nhạc Bigint Khóa chính, khóa ngoại TENBAIHAT Tên bài nhạc Varchar NHACSI Nhạc sĩ sáng tác Varchar CASI Ca sĩ trình bày Varchar THONGTINKHAC Thông tin khác Varchar DUONGDAN Dường dẫn đến nơi chứa bài hát Varchar NGAY Ngày đưa vào Datetime DOWNLOAD Đường dẫn để User Download nhạc về Varchar Chương trình a) Với người sử dụng: Người sử dụng có thể vào tìm lời bài hát mình muốn tìm, có thể Download nhạc mp3 hoặc có thể nghe nhạc trực tiếp trên mạng nếu máy của mình có chương trình nghe nhạc. Thậm chí, người sử dụng có thể góp phần xây dựng trang web này bằng cách gởi lời bài hát lên trang web nữa. Mô hình hoạt động: Trang Nhạc phần nhạc phần lời Download Nhạc Nghe Nhạc Tìm lời bài hát Gởi lời bài hát Liệt kê theo vần Liệt kê theo tác giả Sơ đồ hoạt động của trang Nhạc Khi người sử dụng vào trang nhạc thì sẽ có hai phần cho họ lựa chọn đó là phần nhạc và phần lời nhạc. Nếu người sử dụng chọn phần nhạc thì ở đó, người sử dụng có thể Download về máy của mình những bài hát dạng mp3 có trên đó. Và thậm chí là người sử dụng có thể nghe nhạc trực tiếp trên mạng nếu máy của mình có chương trình nghe nhạc. Chương trình dùng nghe nhạc ở đây là chương trình Windows Media Player, một chương trình rất phổ biến có sẵn trong các phiên bản Windows. Ngoài ra, người sử dụng cũng có thể nghe nhạc trực tiếp thông qua các chương trình có hỗ trợ nghe nhạc trên mạng chứ không nhất thiết phải có chương trình trên. Trong trang này, các bài hát sẽ được liệt kê ra theo tên bài hát và các bài hát này sẽ được sắp xếp theo từng chủ đề. Khi người sử dụng chọn chủ đề nào đó thì sẽ được chương trình liệt kê tất cả các bài nhạc thuộc chủ đề đó ra cho mình chọn. Khi tìm được bài hát ưng ý thì họ chỉ cần Click chuột vào tên bài hát đó thì có thể lựa chọn nghe nhạc hay là Download bản nhạc đó về. Ta có giao diện của phần này như sau: Nếu muốn tìm lời của một bài hát nào đó thì người sử dụng có thể chọn phần khác của trang Nhạc trong Website này là phần lời nhạc. Ở trang này, người sử dụng sẽ có thể tìm lời của bài hát mà mình muốn tìm. Lời của các bài hát sẽ được liệt kê ra theo vần của bài nhạc hoặc được liệt kê ra theo tên cũa tác giả. Khi người xử dụng chọn phần nào đó thì chương trình sẽ liệt kê ra phần tương ứng. Dưới đây là mô hình xử lý việc liệt kê lời bài hát theo hai cách trên: Mô hình xử lý việc liệt kê danh sách các bài hát theo tên bài hát. Vần đầu tiên của lời bài hát cần lệt kê Tìm kiếm Thông báo không có bài nào Danh sách tên các bài hát được tìm thấy Mô hình xử lý liệt kê danh sách tên bài hát theo vần không Có Mô hình xử lý việc liệt kê danh sách tên bài hát theo tên tác giả. Vần đầu tiên của tên tác giả cần lệt kê Thông báo không có tác giả nào hết Danh sách tác giả và số bài hát của tác giả đó có trong trang Danh sách các bài hát của tác giả đó Tìm kiếm Không Có mô hình xử lý liệt kê tên bài hát theo tên tác giả Và sau đây là hình ảnh minh hoạ cho việc liệt kê đó là: Với hai cách trên thì người sử dụng sẽ thuận tiện rất nhiều cho việc tìm lời bài hát. Ngoài ra, người sử dụng cũng có thể góp phần mình vào việc xây dựng trang web này bằng cách gởi lời của những bài hát mới, những bài hát mà trang Web này hiện chưa có lên trang Web. Nội dung của bài hát do người sử dụng gởi về sẽ được người quản trị xem xét. Nếu người quan trị thấy đúng và không có gì sai trái thì sẽ cho đăng lời của bài hát này lên. Và với việc gởi lời bài hát mà trang Web chưa có về cho người quản trị thì người sử dụng đã góp một phần của mình vào việc xây dựng nên trang web giải trí, làm cho trang Web ngày càng thú vị hơn và đáp ứng được nhiều nhu cầu của người sử dụng hơn. Với người quản trị: Admin có thể cập nhật lại lời bài hát, chỉnh sửa chúng hay là xóa chúng khỏi cơ sở dữ liệu. Thêm các bài hát mới vào trang web và kiểm tra lời những bài hát mà người sử dụng gởi lên để cùng xây dựng trang web. Sơ đồ hoạt động của người quản trị ở trang âm nhạc như sau: Người quản trị Nhạc Lời Nhạc Cập nhật lại các bài hát trên mạng như là chỉnh xửa, thay đổi một số bài hát khác. Chỉnh xửa lời nhạc, cập nhật, xóa khỏi trang Web. Kiểm tra lời bài hát do người sử dụng gởi lên Lưu vào CSDL và đưa lên trang Web Xoá Chấp nhận Không chấp nhận Sơ đồ các hoạt động của người quản trị trang Âm Nhạc Nhiệm vụ của người quản trị trong trang này là quản lý tất cả các cơ sở dữ liệu về âm nhạc, tất cả nhạc và lời nhạc trên trang. Những hoạt động của người quản trị ở trang này như là: Về phần Nhạc: Người quản trị có thể thêm một chủ đề mới, cập nhật lại các bài hát trong trang, thay mới phần nhạc, xóa những bài cũ đi để làm cho trang Nhạc luôn mới và sinh động, không bị nhàm chán nhằm đáp ứng nhu cầu giải trí của người sử dụng và phù hợp với mục đích của trang Web. Về phần lời nhạc, người quản trị luôn phải cập nhật lời của những bài hát mới và thêm nó vào trong trang Web. Giao diện của trang quản trị về phần lời nhạc như sau: Nhiệm vụ của người quản trị ở đây gồm: Insert: Thêm lời của bài hát mới vào trang Web. Kiểm tra: Đây là phần kiểm tra lời của những bài hát do người sử dụng gởi lên. Nhiệm vụ của người quản trị ở đây là kiểm tra nếu lời bài hát đúng và không có gì sai trai cũng như chưa có trong cơ sở dữ liệu thì sẽ đưa vào trang và đăng lên cho người sử dụng biết. Nếu lời bài hát đó có rồi hoặc không phù hợp thì xóa nó đi. Delete: xóa lời của bài hát nào đó trong trang Web. Đó là mộ số công việc chủ yếu của người quản trị trong phần quản lý về Âm Nhạc trong Website này. Trang Hình Ảnh Trang này sẽ liệt kê, tập hợp các hình ảnh đẹp bao gồm các loại như : bông hoa, phong cảnh, thời trang, con người, có cả những hình ảnh vui nhộn…Tất cả các hình ảnh dó được người quản trị sắp xếp theo từng thể loại để từ đó người sử dụng dễ dàng xem và tìm kiếm từng thể loại đó một cách dễã dàng. Khi người sử dụng click vào từng thể loại thì sẽ hiển thị trang khác chứa rất nhiều hình ảnh của thể loại đó và người sử dụng tiếp tục click vào một trong những hình đó thì sẽ hiển thị hình đó với kích thước rất to. Sau đây là hình ảnh giao diện của trang hìn

Các file đính kèm theo tài liệu này:

  • docwebsitegiaitri.doc