Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 27 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
27
Dung lượng
126 KB
Nội dung
PHẦN A : TÌM HIỂU ĐỀ TÀI CHƯƠNG I COMMON GATEWAY INTERFACE Với giao thức HTTP thì trình duyệt Web đã có thể truy cập đến nhiều dòch vụ Internet, nhưng không phải là tất cả. Bản thân trình duyệt cũng có giới hạn trong khả năng liên hệ với bất cứ dạng khác với file HTML tónh. Một trong những cách để vượt qua giới hạn này là sử dụng Gateway. Một Gateway cung cấp cho 1 Client một giao diện để tạo file và những dòch vụ mở rộng, xuất hiện như là những tài liệu HTML có thể đọc được. Điều này cho phép người sử dụng có cả 2 khả năng là truy cập vào những dòch vụ khác trên Web Server của bạn và nhập dữ liệu vào Web Server thông qua HTTP . Những Gateway ở trên Server nơi chúng có thể lấy Input của người sử dụng Client và sau đó là dữ liệu xuất ra máy Client trong một dạng có thể sử dụng được như là tài liệu HTML hoặc là URL. Bản thân Gateway cũng không thể liên hệ làm thỏa mãn được tất cả những yêu cầu đòi hỏi của Client, nhưng nó có thể tìm được tập tin, chương trình hoặc là những Script trên những Server nào đó để thực hiện công việc này. I . KHÁI NIỆM CGI (common gateway interface) CGI là một chuẩn truyền thông giữa Server và Gateway program. Khi Client truy xuất dến một Gateway program, Sever sẽ kích hoạt chương trình và trao cho nó các dữ liệu gữi từ Client mà Servser nhận được. Khi chương trình xử lý xong dữ liệu, nó gửi kết quả về cho Server và dựa vào đó Server gửi kết quả về cho Client. Đúng như tên gọi, CGI đóng vai trò như một cửa ngỏ, một trạm trung chuyển giữa Server và Gateway program, nó quyết đònh dữ liệu được truyền qua lại giữa Server và Gateway Program như thế nào. Như chúng ta đã biết, HTML bẩm sinh đã tạo cho người sử dụng một cảm giác hoàn toàn thoải mái khi ngao du trên web. Ở đầu này trái đất, tôi muốn tìm thông tin ở tận một ngõ ngách nào đó trên trái đất, thế thì tôi chỉ việc ngồi vào trước một máy tính đã nối mạng vànhấp chuột vào những dòng văn bản đổi màu trên trang Web. Vì sao ? Vì trên chiếc máy đó có một browser và tất cả các công dân Web đều sử dụng ngôn ngữ HTML. Với HTML, bạn có thể xem được tất cả những thông tin, những điều kì thú trên Web. Nhưng rồi bạn nhanh chóng nhận ra rằng, công việc đó cũng như xem Tivi hay nghe Radio mà thôi.Đôi khi bạn muốn góp ý một cách riêng tư với một ai đó, bạn không có sự lựa chọn nào ngoài việc đưa ý kiến đó lên mạng cho mọi người cùng xem, nhưng chắc gì người đó biết mà đọc, hay bạn phải sử dụng một công cụ khác là email. Bạn lại mong muốn sử dụng các dòch vụ như tra cứu điện thoại, hỏi đáp… nhưng không tài nào thực hiện được, nói cách khác, bạn không tương tác được trên các trang Web. => CGI ra đời để đáp ứng nhu cầu tương tác qua lại giữa các trang Web. Cho phép thực hiện được mong muốn sử dụng các dòch vụ như tra cứu điện thoại, hỏi đáp, sổ vàng Internet … Nó phải sử lý những cơ sở dữ liệu phức tạp để sử dụng được những mong muốn trên mà HTML không thể làm được. 1 . THE CGI EXPLORED CGI là một sự đònh rõ hướng nơi Gateway của Server liên lạc với một Web server. Khi dữ liệu đến từ trình duyệt Web của máy Client, dữ liệu này chứa một truy vấn hoặc một form HTML sử dụng phương pháp yêu cầu là GET hoặc POST thì sau đó dòch vụ Internet hay là “inets” khởi động dòch vụ http (https) để liên lạc với dữ liệu HTTP đang đến . Dòch vụ HTTP gởi 1 thông điệp sử dụng những đặc điểm kỹ thuật CGI đến chương trình của Gateway của Server. Gateway nhận được dữ liệu này từ trình duyệt cũng như là dữ liệu nhập chuẩn hay là những biến môi trường. Sử dụng dữ liệu này Gateway bắt đầu với bất cứ câu trả lời nào là cần thiết bằng việc Parsing và xử lý dữ liệu của Client . Parsing là thủ tục máy vi tính đặt dữ liệu vào, tìm tất cả những cú pháp của nó và lưu vào những biến nếu cần thiết, cho nên nó sẳn sàng để thực thi những yêu cầu được đặt ra. Dữ liệu ra này quay trở lại dòch vụ http như là HTML hoặc là một vài dạng dữ liệu khác mà HTTP có thể sử dụng được, sau đó dòch vụ http gởi dữ liệu này đến trình duyệt Web của máy Client. Có thể là không có một câu trả lời nào từ Gateway nếu như dữ liệu vừa nhận được chỉ dành cho việc lưu trữ hay là nhập vào một cơ sở dữ liệu hoặc Folder tập tin trên Server. 2 . CGI and YOUR SERVER (CGI và Server của bạn) Để làm việc hiệu quả, CGI phải biếi nơi có những sự vật đang tồn tại. Cho phép thực thi những chức năng khác nhau, giữ rãnh ghi của người truy cập sử dụng, chạy debug những Script CGI của bạn, và bạn cũng phải biết nơi nhũng sự vật đang tồn tại. Tất cả những điều này được tổ chức trong những thư mục thông dụng khác nhau trên server của bạn . Bạn cũng không bao giờ hạn chế tên thư mục được sử dụng ở đây nhưng chúng là những cái tên tập tin được sử dụng một cách thông dụng cho thư mục biểu thò được mục đích . Chú ý : Có một sự rắc rối thường xảy ra khi làm việc với WIN NT, đó là hầu hết những Resource liên hệ với CGI, liên hệ với những mạng khác được viết từ nền UNIX và sử dụng những thành phần, khái niệm UNIX chung thì không thể dòch sang dạng của WIN NT một cách dễ dàng . 3. The DIRECTORIES Sever NT làm việc dựa vào nhiều thứ, với một hệ thống thư mục được tổ chức tốt, sự quản lý dữ liệu chính xác thì quyết đònh sự điều hành mau lẹ của một Server. Nếu những dòch vụ của bạn không tìm thấy dữ liệu được yêu cầu thì chúng không thể làm việc chính xác được. Một Server được tổ chức tồi nhưng bắt buộc những dòch vụ khác nhau đi xuyên qua một nhóm thư mục và thư mục con trước khi chúng có thể tìm thấy điều đang tìm thì thật là khó chòu . Sau đây là những thành phần được sử dụng bởi Server để điều hành những chương trình CGI. Đây là tất cả những thư mục mà bạn phải truy cập vào để lập trình Gateway thành công . Nếu bạn cũng không phải là người quản trò hệ thống thì bạn cần thảo luận những vấn đề này với người quản trò. Sever root : Nhiều tập tin chỉ rõ nơi những chương trình CGI có thể thao tác được và những quyền thực thi thì được lưu trong thư mục gốc của Server. Thư mục đó thường được đặt trên ổ đóa C trên máy Sever. Bên trong thư mục gốc của server có 2 vùng quan trọng : thư mục LOG và thư mục REGISTRY . Nếu bạn không có quyền đối với những thư mục này thì bạn vẫn có thể sử dụng những Script của Perl , tuy nhiên việc bạn sẽ phải hỏi ý kiến của người quản trò hệ thống đối với những thông tin cộng thêm hay những quyền đặt biệt là cần thiết cho bạn . Thư mục LOG là nơi tất cả những tập tin log được lưu trữ , bao gồm lỗi xâm nhập vào mạng, bảo mật, hệ thống và ứng dụng. Tập tin quan trọng nhất là error log, nơi đây lưu tất cả những lỗi liên quan đến những tài liệu HTML, những chương trình CGI và những SSI (Server Side Includes). Truy cập vào hệ lỗi thì cần thiết cho việc gỡ rối hệ thống của bạn . Bạn có thể nhìn thấy những log này trong Windows NT khi sử dụng Event Viewer. Trên Windows NT Server, log bảo mật là log giữ những rãng ghi của những người nào đang sử dụng (và đã sử dụng) tài nguyên trên Server. Log này có ích khi truy tìm những việc thành công từ những trang Wen khác nhau của bạn nhận được. Log bảo mật dùng hai icon khi Event Viewer sử dụng nó để làm tăng tốc độ tìm kiếm của bạn. Một chìa khóa được sử dụng để tượng trưng cho một hành động thành công , và một khoá để biểu thò cho một hành động không thành công . Có 2 Log khác mà Windows NT chạy như là một phần của việc thiết lập Server của nó. Đó là Log hệ thống ghi lại tất cả những sự kiện xảy ra trong hệ thống Windows NT , và Log ứng dụng ghi lại những sự kiện xảy ra trong suốt quá trình ứng dụng chạy trên Windows NT. Bạn có thể có những Log giữ những rãnh ghi của bất kỳ loại thông tin nào. Nếu có một chỗ phức tạp sẽ được sử dụng nhiều thẻ html mới hơn được tạo bởi NETSCAPE ( như là : <TABLE> ), hoặc khi bạn đang sử dụng Java, bạn muốn có những tài liệu HTML xen kẻ nhau cho trình duyệt , như là MOSAIC không hỗ trợ tag như NETSCAPE đòi hỏi . Bạn có thể sử dụng một log dùng chung với một Perl Script, nó đếm các loại trình duyệt khác nhau truy cập vào Server của bạn . Dữ liệu có thể được sử dụng để tổ chức lại site của bạn cho phép ra lệnh cho mỗi trình duyệt khác nhau đối với trang Web được tạo ra đặc biệt dành cho trình duyệt đó. Thư mục Registry chứa tạm dữ liệu cấu hình và khởi tạo từ Registry được điều khiển bởi việc sử dụng trình ứng dụng : Registry Editor, Control Panel, User Manager hay là File Manager. Dữ liệu trong Registry thiết lập nên những trường hợp có thể xảy ra như sự cho phép, và xảy ra như thế nào khi sử dụng biến môi trường trên Server của bạn. Sự cho phép được điều khiển bởi việc sử dụng những tuỳ chọn "Permissions" trong menu Security trong file Manager. Bạn có thể bật SSIs lên để những trang Web của bạn sử dụng những chức năng SSIs vàcũng cho Server biết về những phần mở rộng của tập tin không có trong bảng ghi chi tiết kỹ thuật của MIME , như là : x-parsed-html-type bằng việc sử dụng tùy chọn Associate trong menu File trong file Manager. Điều này quan trọng giữ cho Server luôn cập nhật những bản ghi chi tiết kỹ thuật MIME mới để những kiểu tập tin khác nhau này có thể được sử dụng trên Server. Một vài kiểu mở rộng của tập tin mới được sử dụng để xác đònh tập tin nào Server sẽ tìm kiếm cho SSI. Tập tin với phần mở rộng là ".shtml" sẽ được phân tích bởi Server như là SSI. Bạn cũng phải kiểm tra xem loại tập tin nào được Server cho phép bằng cách kiểm tra phần tên mở rộng của tập tin được hệ thống chấp nhận. Để làm được việc này, ta sử dụng Registry Editor và nhìn vào cây thư mục con : HKEY_LOCAL_MACHINE/ SOFT WARE trong Folder thư mục Classes. Một danh sách đầy đủ các tên tập tin được hệ thống chấp nhận được liệt kê ở đây với tên của chúng, đó là thông tin về tên tập tin ở dạng văn bản (text) và được lưu trữ trong folder có tiêu đề là ".txt" . Microsoft đề nghò bạn nên sử dụng chế độ Read-only khi dùng Registry Editor, khi muốn thay đổi thì thông qua ứng dụng Control Panel thích hợp, mỗi chức năng đều có thủ tục chính xác để làm thay đổi Registry đã được cài sẵn. Thêm phần mở rộng ".pl" của tập tin Perl, bạn có thể sử dụng File Manager, vào menu File, chọn Associate. Ngược lại, bạn cũng có một kế hoạch được sắp đặt hoàn hảo cho việc quản lý bộ nhớ, hạn chế việc phân tích một vài kiểu nào đó, nhưng Server đã được thiếp lập để kiểm tra tất cả tài liệu, giảm được tất cả những công việc nặng nhọc cho bạn. Thông tin về những lệnh ảnh hưởng đến mỗi cây thư mục được tìm thấy trong thẻ form HTML sau : < DIRECTORY directory_path > directory_path là nơi chứa tất cả các tập tin và thư mục bên dưới cây thư mục đó. Câu lệnh thiết lập được nêu trên phải được kết thúc với thẻ : </DIRECTORY> . Sử dụng những công cụ (tool) có trong Event Viewer như tùy chọn sorting hay filtering để điều khiển dữ liệu trong log. Hay sắp xếp danh sách một cách có trật tự những dữ liệu nhập (entry) hoặc biến cố (event) theo thứ tự từ cũ nhất đến mới nhất và ngược lại bằng cách chọn một trong những tùy chọn trong menu View trong Event Viewer ( ở đây tùy chọn được đề nghò sẵn là từ cũ nhất đến mới nhất). Kích cỡ (size) của log sự kiện có thể sẽ nhanh chóng trở thành một vấn đề cần phải giải quyết nếu server bận rộn. Chế độ lọc (filtering) giúp chúng ta làm giảm được vấn đề này. Khi những sự kiện (event) được lọc, bạn có thể xác đònh được lúc nào thì việc liệt kê những sự kiện đó được bắt đầu và kết thúc ; và kiểu sự kiện được ghi. Việc ghi (log) có thể được bắt đầu tại dòng nhập (entry) đầu tiên hoặc được gán một ngày cụ thể. Việc ghi có thể được liệt kê cho đến sự kiện cuối cùng hoặc có một ngày kết thúc cụ thể. Chúng ta được đề nghò là nên chọn một chuỗi sự kiện cụ thể để xem bởi vì toàn bộ danh sách có thể nhanh chóng trở nên rất dài. Những kiểu sự kiện khác nhau bao gồm : ∗ Thông tin . ∗ Cảnh báo (warning) : cho những lỗi chưa đến mức nguy cấp. Mục này rất quan trọng để lưu ý về những vấn đề có thể xảy ra trong tương lai. ∗ Error : những lỗi nguy cấp có thể làm mất dữ liệu hoặc làm hư những hàm chủ yếu . ∗ Kiểm tra sự thành công : những sự kiện kiểm tra sự thực thi hành động thành công . ∗ Kiểm tra sự thất bại : những sự kiện kiểm tra sự thực thi hành động bò thất bại . Để tìm những sự kiện cụ thể, vào Event Viewer chọn menu View, chọn chức năng Find. Những thông số ở đây rất hữu ích cho việc đònh vò một kiểu sự kiện log cụ thể, cho dù bạn có đang tìm kiếm một lỗi hay không, hay để xác đònh có một ứng dụng khởi đầu thành công hay không. II . CGI SCRITP và CƠ CHẾ HOẠT ĐỘNG CGI 1> CGI SCRIPT Các trình ứng dụng CGI thường được viết bằng các ngôn ngữ lập trình hỗ trợ Script nên còn được gọi là Script.Các ngôn ngữ này phải có khả năng đọc được các biến môi trường.Trên Unix,người ta sử dụng các ngôn ngữ C,C + + ,TCL,Perl,Python,Bourne,Korn hay C shells.Trên Windows NT người ta thường sử dụng C,C ++ ,Perl hay Visual Basic (windows CGI). => CGI Script là một ngoại chương trình chạy trên Web Server . Chúng ta có thể sử dụng CGI Script để tạo Web tương tác ở mức độ cao . CGI Script đònh nghóa chuẩn cho các ngoại chương trình được sử dụng trên Web Server như thế nào và chúng tác động với những chương trình ứng dụng khác ra sao đó chính là common gateway interface . Đúng với tên gọi, CGI có vai trò như một cửa ngõ trung gian giữa Server và một chương trình Gateway. CGI chính là một chuẩn truyền thông giữa Server và một chương trình Gateway . CGI cho phép người tạo Web che dấu người đọc những sự phức tạp trong việc xử lý các dữ liệu trong trang Web. Người đọc chỉ việc click vào một vùng, một hình ảnh, một dòng chữ được đánh dấu, hoặc nhập vào những mẫu đăng kýcósẵn sau đó click vào một vùng trong trang Web khi hoàn thành việc đăng ký. Mọi thứ sau khi click chuột dường như xảy ra một cách tự động và người đọc không cần biết các dữ liệu đã được xử lý như thế nào và tại sao lại như vậy. Là một người tạo Web thì chúng ta phải hiểu bản chất CGI Script làm việc như thế nào. Trong khi người đọc chỉ cần nhìn kết quả việc đăng ký cuả họ hoặc trả lời những câu hỏi được đưa ra, thì có nhiều công đoạn xảy ra đằng sau được tóm tắt như sau : • Trình duyệt của người đọc sẽ chuyển dữ liệu cần nhập vào đến Server . • Server chuyển trở lại dữ liệu nhập đến một CGI Script . • CGI Script xử lý dữ liệu nhập , chuyển dữ liệu này đến một trình ứng dụng khác nếu cần thiết, sau đó gởi dữ liệu xuất ra Web Server . • Web Server chuyển dữ liệu xuất trở ra trình duyệt cuả người đọc . Như đã biết ở phần trên sử dụng CGI Script giúp ta có thể tự động hoá một số công việc làm bằng tay mất nhiều thời gian, giúp ích cho người đọc có được sự đơn giản, được tự động trả lời cho những dữ liệu họ nhập vào một cách dễ dàng khi đăng kí (submit), và nhanh chóng điều khiển việc tìm kiếm. CGI script có thể xác nhận đònh danh cuả user và những thông tin về password cuả họ, cấp cho user quyền truy xuất trong những vùng giới hạn cuả Web site Mô hình hoạt động theo cơ chế CGI .Với mô hình này chúng ta có thể hiểu thêm phần nào về CGI và CGI Script . 2> CƠ CHẾ HOẠT ĐỘNG CỦA CGI Trong cơ chế hoạt động của CGI ta cần phân tích 2 phần: - Giao tiếp giữa Client và Server. - Giao tiếp giữa Server và CGI. Trong đó : .Giao tiếp giữa Client và Server do HTTP đảm trách . . Giao tiếp giữa Server và CGI script sẽ do cơ chế CGI đảm trách A. GỞI DỮ LIỆU CỦA CLIENT CHO SERVER Có 3 cách: a.Query string : Client cho biết thông tin mình yêu cầu trong URL Ví dụ có một CGI Script tên là Search, Script này được viết để tìm kiếm một chuỗi ký tự nào đó trong tất cả các file trong thư mục gốc .Client muốn sử dụng Script này sẽ có dạng như sau : Http://www/script/search?search_string Trong URL phần phía sau dấu '?' được gọi là query tring, trong ví dụ này query string là search_string. Client sẽ đẫy query string lên Server. Server sẽ kích hoạt CGI script có tên là Search và trao cho nó query string mà server vừa nhận được. b.Extra path : Cũng ví dụ trên,nhưng bạn muốn tìm kiếm trong một thư mục khác,bạn phải thêm thông tin và URL : http://www/Scripts/Example/dir?search_string trong đó chuỗi example/dir được Server thông dòch như là thông tin extra path, query string vẫn là search_string. Trong cả hai trường hợp trên, Client đưa thông tin cho Server thông qua các biến môi trường (enviroment variable), ứng với query string có biến QUERY_STRING, ứng với extra path là PATH_ INFO. Chúng ta sẽ tham khảo các biến môi trường sau. c.Message Body : Dữ liệu Client gửi được đóng gói trong các message, cách này chỉ áp dụng với method POST và thưòng là sử dụng với form trong html. Server nhận message từ form và gửi dữ liệu đã "post" lại cho Gateway Program. Gateway Program đọc dữ liệu từ thiết bò nhập chuẩn (Standard Input). Các dữ liệu client gửi cho server đều được mã hóa. B. GỞI DỮ LIỆU TỪ SERVER ĐẾN SCRIPT Gateway Script được sử dụng để xử lý việc đăng nhập cuả những người đọc trang Web cuả chúng ta. Dữ liệu nhập thường trong form của những biến môi trường đến Gateway Script bằng Web server . Những biến môi trường này mô tả thông tin được mang đến, kiểu cuả dữ liệu , kích thước cuả dữ liệu , và những thông tin quan trọng khác . CGI qui đònh cơ chế cho Server gửi dữ liệu cho Script. Có 3 cơ chế a.Thông số dòng lệnh (Command line argument) : Server gọi Script theo cơ chế Command line. Cơ chế này chỉ dùng với giải pháp GET và ISINDEX query. ISINDEX query là method duy nhất đẩy được dữ liệu cho Gateway Program bằng thông số dòng lệnh và cũng là kỹ thuật đơn giản nhất được sử dụng . Vấn đề đặt ra là làm sao phân biệt được một ISINDEX query. Thật đơn giản một ISINDEX query không chứa bất kỳ dấu "=" chưa được mã hóa nào. Như đã nói ở trên, dữ liệu Client gửi cho Server đều được mã mã hóa, dấu "=" được mã hóa thành chuỗi "%3d". Do đó, sự hiện diện của bất kỳ dấu "=" nào trong query string cũng đều là chứng cứ kết luận nó không là một ISINDEX string và như vậy sẽ không áp dụng được cơ chế Command line này được . b. Thiết bò nhập chuẩn (Standard input): Script sẽ đọc thông tin mà Server trao từ Standard input. Đây là cách dữ liệu của Client thông qua method POST được đẩy lên cho Script. Để đọc được dữ liệu Script cần phải tham khảo biến CONTENT_ LENGTH để biết chiều dài dữ liệu cần phải đọc vào. c. Biến môi trường (Enviroment variable) : Server đặt thông tin vào các biến môi trường trước khi gọi Script. Script sẽ truy xuất các biến này để lấy thông tin. Mọi thông tin Client gửi, trừ dữ liệu POST, đều được đẩy cho Script thông qua các biến môi trường. Như vậy sẽ có các biến môi trường để cất Query string , Extra path và tất cả các nội dung Client gửi cho Server. Người đọc gởi thông tin đến một CGI Script bằng cách kích hoạt một liên kết chứa đựng một dấu chỉ dẫn tới Script đó . Gateway Script xử lý dữ liệu nhập và đònh dạng kết quả dữ liệu xuất cho Web server có thể sử dụng được. Web server lấy kết quả và gởi nó trở lại cho Browser (cuả người đọc), browser hiển thò kết quả xuất ra màn hình . Dữ liệu xuất từ một Gateway Script bắt đầu bằng một header chứa một hướng dẫn tới server, trong đó chứa 3 thông tin sau : kiểu nội dung , vò trí , trạng thái Header. Việc trao đổi dữ liệu giữa một Client và một Server gồm có nhiều phần. Những phần đó có thể phân ra làm 8 bước như sau : 1. Client gởi dữ liệu nhập tới 1 server. 2. Server thiết lập biến môi trường gắn liền với dữ liệu nhập. 3. Server gởi dữ liệu nhập như là những biến ( variable ) tới CGI Script . 4. Server gởi dữ liệu nhập là command-line hoặc là dòng standard input tới CGI Script nếu thấy cần thiết . 5. Script xử lý dữ liệu nhập. 6. Script gởi trả dữ liệu xuất tới server. Dữ liệu xuất này luôn chứa đựng 1 header hạn chế và thỉnh thoảng chứa một BODY nếu dữ liệu thêm vào cần thiết . 7. Server thiết lập biến môi trường gắn liền với dữ liệu xuất . 8. Server gởi dữ liệu xuất cho Client C . GỞI TRẢ DỮ LIỆU CHO SERVER Có 2 cách để Script gửi dữ liệu cho Server a.Ghi ra thiết bò xuất chuẩn : Script gửi dữ liệu về cho Server bằng cách ghi dữ liệu ra thiết bò chuẩn, đây là cách duy nhất Script có thể gửi dữ liệu về cho Client. Tổng quát, dữ liệu gửi bao gồm hai phần, phần thứ nhất là một tập hợp các Server directive mà Server sẽ dùng nó phân tích dữ liệu và tạo Respone Header, phần thứ hai là dữ liệu Script trả về. b.Trả về bằng tên Script : Cách thứ hai là trả dữ liệu về bằng tên của Gateway Program. Gateway Program có tên bắt đầu bằng chuỗi nph- gọi là nonparsed header program. Đặt biệt đối với Script loại này, Server sẽ không phân tích dữ liệu của chương trình xuất ra mà gửi thẳng cho Server. Do đó, khi viết chương trình loại này, bạn phải chắc chắn là đã nắm kỹ cách tạo Respone header nếu không muốn Brower "lơ là" với dữ liệu của bạn. 3> NHẬP DỮ LIỆU VÀO CGI SCRIPT : Khi một user kích hoạt một liên kết tới một Gateway Script, dữ liệu nhập được gởi tới Server . Server đònh dạng lại dữ liệu này vào trong biến môi trường và kiểm tra để xem nếu dữ liệu thêm vào được đưa ra theo dòng lệnh hoặc dòng thiết bò nhập chuẩn . a) Biến môi trường ( Evironment Variables ) Dữ liệu nhập trong CGI Script thì thông thường trong form của biến môi trường. Biến môi trường được gởi tới Gateway Script được kết hợp với thông tin yêu cầu browser từ server , server xử lý yêu cầu , và dữ liệu được gởi tới trong yêu cầu đó . • Các biến môi trường thường gặp : CONTENT_LENGTH = length : Nếu Client POST hay PUT dữ liệu cho Server, thì biến môi trường này sẽ chứa chiều dài message (tính bằng byte), nếu không có dữ liệu thì biến này sẽ là NULL. Điều cần lưu ý là length ở dạng chuỗi ký tự .Do đó khi bạn truy xuất đến phải nhớ đổi ra số. Như trong C bạn sẽ dùng hàm atoi(). CONTENT_TYPE = type/subtype(;parameter) : Cho biết loại dữ liệu mà Script sẽ truyền. Server sẽ lấy dòng này thay thế cho dòng Cont_type mặc đònh của nó. GATEWAY_INTERFACE = CGI/version : Cho biết version interface (CGI) sử dụng, hiện nay là version1.1 HTTP_ACCEPT = type/subtype, type/subtype… : Lưu trữ danh sách các MIME-Type cho Client có thể nhận được (nằm trong Resquest header của Client). Script dùng thông tin này để quyết đònh loại dữ liệu gửi về cho Client. HTTP_USER_AGENT= program/versipn : Chứa nội dung của file USER_ AGENT trong header của request. HTTP_FROM = e_mail addr : Đòa chỉ e_mail của user nếu mail đó được gửi bằng Browser . HTTP_IF_MODIFIED_SINCE = date : Chứa nội dung field If_Modified_ Since trong header của request. PATH_INFO = extra_path: Chứa extra_path trong URL. QUERY_STRING = query_string : Chứa query_string nằm sau dấu "?" trong URL. Lưu ý là thông tin này chưa được giải mã, programer phải tự viết lấy. REQUEST_METHOD = HTTP_method : METHOD Client sử dụng (POST,GET,…) . SERVER_NAME = domain.name : Lưu trữ domain name của server, nếu không có domain name thì thế vào đòa chỉ IP. SERVER_PORT = number : Đòa chỉ port mà Client gọi. [...]... ACTION=“/cgi-bin/mailtool.cgi”> •… • * Multipart Message : • Một form khai báo : ENCTYPE=“multipart/form-data” • Dùng INPUT có kiểu là file * Message có dạng : CONTENT-type: multipart/mixed; boundery=ramdomstring [CR-LF] ramdomstring Content-type: type [CR-LF] Nội dung tài liệu 1 … ramdomstring Content-type: type [CR-LF] Nội dung tài liệu 2 … ramdomstring Type : text/plain, text/html, audio/aiff,... trong vò trí hiện hành trước khi document được gởi tới Client Đoạn mã HTML sau đây mang 1 thông số dòng lệnh gọi thực thi một script có tên là daily-access : This page has been accessed times today. Script daily_access là một simple script, nó thêm vào một count (đếm ) mỗi lần một trang được truy xuất trong một ngày đặc biệt , ví dụ người khách thứ... PATH_INFO, thường được dùng để tham khảo các file cấu hình của Gateway Program REMOTE_ADDR = xxx.xxx.xxx.xxx : Đòa chỉ IP của máy truy xuất vào server REMOT_HOST = client.domain.name : Chứa domain name của máy tạo ra request Nếu domainname không có, biến này sẽ bò bỏ trống vì đòa chỉ IP đã có biến REMOTE_ADDR giữ AUTH_TYPE = type : Đối với Script được bảo vệ, biến này sẽ chỉ ra cách thức nhận dạng mà... SERVER_SOFTWARE = CERN/3.0 SERVER_NAME = www.tvb.com GATEWAY_INTERFACE = CGI/1.1 SERVER_PROTOCOL = HTTP/1.0 SERVER_PORT = 80 REQUEST_METHOD = POST HTTP_ACCEPT = text/plain, text/html, application/rtf,application/postsript, audio/basic, audio/x-aiff, image/gif, image/jpeg, image/tiff, video/mpeg PATH_INFO = PATH_TRANSLATED = SCRIPT_NAME = /cgi-bin/survey.pl QUERY_STRING = REMOTE_HOST = REMOTE_ADDR = REMOTE_USER... #!/usr/bin/perl #create header with extra line space print “content-type: text/html\n\n”; #Add body in HTML format print . Chứa nội dung của file USER_ AGENT trong header của request. HTTP_FROM = e_mail addr : Đòa chỉ e_mail của user nếu mail đó được gửi bằng Browser . HTTP_IF_MODIFIED_SINCE = date : Chứa nội dung. HTTP_method : METHOD Client sử dụng (POST,GET,…) . SERVER_NAME = domain.name : Lưu trữ domain name của server, nếu không có domain name thì thế vào đòa chỉ IP. SERVER_PORT = number : Đòa chỉ port. Đòa chỉ IP của máy truy xuất vào server. REMOT_HOST = client.domain.name : Chứa domain name của máy tạo ra request. Nếu domainname không có, biến này sẽ bò bỏ trống vì đòa chỉ IP đã có biến