Tải bản đầy đủ (.doc) (27 trang)

Common gateway interface

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (137.67 KB, 27 trang )

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 khoâ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 cuûa file USER_
AGENT trong header cuû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.


SERVER_PROTOCOL = http/version: Cho biết protocol sẽ được dùng .Điều
này cho phép Script hỗ trợ các version khác của HTTP và các protocol khác
HTTP như Gopher.
SERVSER_SOFTWARE = server_name/version :Tên và version của phần
mềm Server dùng để trả lời request.

SCRIPT_NAME = /path/Script_name : Đường dẫn và tên Script. Biến này
thường được sử dụng để tạo URL tham khảo lại chính Script đó trong trường hợp
dùng Script để tạo ra các trang HTML.
Ví dụ : Bạn thiết kế một Script sao cho khi gọi đến nósẽ tạo ra một form có
action là chính nó, bạn có thể tạo ra URL trên như sau:
Http://$SERVER_NAME:$SERVER_PORT$SCRIPT_NAME
PATH_TRANSLATED = /transl/extra_path : Chứa đường dẫn thực sự của
đường dẫn trong biến 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à user phải thực hiện. Nếu không cần nhận dạng thì biến này
trống. Cách thức nhận dạng hiện dùng là Basic, tương ứng với kỹ thuật nhận dạng
Basic Authentication .
REMOST_USER = name : Chứa tên của user, chỉ được thiết lập khi có yêu
cầu nhận dạng, nếu không nó bị trống. Bạn có thể sử dụng nó để kiểm soát quyền
truy xuất của user.
Trong các biến kể trên ngoài 3 biến SERVER_NAME, SERVER_SOFT
WARE,GATEWAY_INTERFACE luôn được gửi đi cùng mọi request và như vậy
không phải lúc nào cũng có.
b) Ví dụ :
Chúng ta sẽ viết một CGI script cực kỳ đơn giản làm công việc sau :


Khi Client truy xuất đến sẽ in ra trên Browser dòng chữ :
"Hello everybody!".

Chương trình viết bằng ngôn ngữ C.
# include
void main()
{
//Print header fields
printf("Content-type:text/html\n");
printf("\n");
//Terminate header field
//Print data beging sent to Client
printf("\n");
printf("\n");
printf("\n");
printf("Hello Everybody!\n");
printf("\n");
printf("\n");
return;
}
Bạn lưu thành file "example.c", biên dịch thành file "example. exe" và cất
vào thư mục Script (thư mục được Wed server cấp quyền thực thi, nếu bạn đang sử
dụng Win NT 4.0, mặc định bạn có thư mục này, địa chỉ thực của thư mục là /InetPub/
Scripts Sau đó bạn chạy một Browser nào đó như Netscape chẳng hạn. Bạn gõ vào
hộp thoại Go to : Http://www/scripts/example.exe . Bạn sẽ thấy kết quả về minh họa
ví dụ CGI Script .

 CGI COMMAND LINE
Trong môi trường UNIX , user có thể gởi thông tin hoặc thực thi Shell Script trong
một vùng gọi là command line . Thông tin được nhập vào command line thường được
thực thi bằng một trình thông dịch . Command line thường được sử dụng để thi hành 1
ISINDEX query một cách đơn giản để thêm vào sự tìm kiếm liên kết tới tài liệu của
bạn . ISINDEX query là một giải pháp dễ dàng cho việc tìm kiếm tài liệu nhưng nó

không phải là giải pháp tốt nhất . Hầu hết những người viết Web chú ý đến việc cung
cấp một cách đầy đủ phương thức tìm kiếm document được chỉ rõ hoặc phương thức
tìm kiếm form-based document cho người đọc .
Vài server software cho phép bạn sử dụng thông số dòng lệnh trong những phương
thức khác sử dụng exec command . Với exec command bạn có thể trực tiếp thực thi
một gateway script, một hành động được chỉ rõ , ví dụ như trả về một trị được thay thế
vào trong document của bạn . Chú ý là nếu sử dụng exec command là nếu người đọc


xem mã nguồn HTML , họ chỉ thấy trị xuất nhưng nếu họ download vào máy tính của
họ thì mọi thứ còn lại vẫn đúng . Lý do là command thực thi một cách dứt khoát mỗi
khi nó bị đụng độ .
Exec command thông báo cho server để thực thi một dòng lệnh hoặc một script .
Dữ liệu xuất của script được thay thế 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
<!-#exec cmd="/usr/cgi-bin/daily_access" ->
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ứ 25 trong
ngày sẽ thấy dòng chữ sau :
“ This page has been accesssed 25 times today .”
 CGI STANDARD INPUT
Hầu hết input đều được gởi tới một Web server được sử dụng để thiết lập biến
môi trường, nhưng không phải tất cả đều thích hợp trong biến môi trường . Khi một
user đăng ký một dữ liệu hiện hành được xử lý bởi một gateway script , dữ liệu đó
được nhận như một URL_encoded search string (tìm chuỗi URL được mã hóa ) hoặc
thông qua dòng dữ liệu nhập chuẩn (standard input stream).
Server biết biết cách xữ lý dữ liệu hiện hành bằng method thích ứng cho từng loại

dữ liệu đó.
Việc gởi dữ liệu như standard input là cách trực tiếp hay nhất để gởi dữ liệu .
Server chỉ là báo cho gateway script có bao nhiêu tập 8-bit dữ liệu đọc từ standard
input. Script mở dòng dữ liệu nhập chuẩn và đọc số lượng đã được chỉ rõ của dữ liệu .
Trong khi URL_encoded search string quá dài có thể được bỏ bớt , dữ liệu đã gởi vào
dòng dữ liệu nhập chuẩn sẽ không được cắt ngắn . Do đó dòng dữ liệu nhập chuẩn là
cách được ưu tiên hơn để gởi dữ liệu .
 CLARIFYING CGI INPUT ( Làm sáng tỏ CGI input )
Bạn có thể nhận ra một phương thức đăng ký (submission method) khi bạn tạo
những fill-out form. Dưới HTTP 1.0 , có hai submission method cho form :
1.
Method GET của HTTP sử dụng URL_encoded search tring . Khi một
server nhận một URL_encoded search string , server đánh dấu trị của search
string tới biến QUERY_STRING .
2.
Method POST của HTTP sử dụng standard input stream . Khi server nhận
dữ liệu từ standard input stream , server đánh dấu trị được kết hợp với chiều
dài của input stream tới biến CONTENT_LENGHT .


Một ví dụ về Web document chứa một form với 3 trường khóa :
NAME , ADDRESS , và PHONE_NUMBER .
Giả sử URL tới script là :
/>và user trả lời như sau :
Sandy Brown
12 Sunny Lane WhoVille , USA
987-654-3210
Chính thông tin được đăng ký sử dụng method POST và GET được xem xét khác
nhau bởi server . Khi method GET được sử dụng , server thiết lập những biến môi
trường và sau đó gởi dữ liệu nhập vào script survey.p1 :

PATH=/bin:/usr/bin:/usr/etc:/usr/ucb
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 = GET
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 =
NAME=Sancy+Brown&ADDRESS=12+Sunny+Lane+WhoVille, +USA
&PHONE_NUMBER=987-654-3210
REMOTE_HOST =
REMOTE_ADDR =
REMOTE_USER =
AUTH_TYPE =
CONTENT_TYPE =
CONTENT_LENGTH =
Khi method post được sử dụng , server thiết lập những biến môi trường sau đây,
sau đó gởi input tới script survey.p1 :
PATH=/bin:/usr/bin:/usr/etc:/usr/ucb
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 =
AUTH_TYPE =
CONTENT_TYPE = application/x-www-form-urlencoded
CONTENT_LENGTH = 81
Dữ liệu POST-submitted sau đây được gởi tới gateway script thông qua standard
input stream :
NAME=Sandy+Brown&ADDRESS=12+Sunny+Lane+WhoVille,
+USA&PHONE_NUMBER=987-654-3210
† OUTPUT FROM CGI SCRIPTS
Sau khi script xử lý xong input nó sẽ xuất output trở lại cho server . Server tiến
hành gởi output về cho client . Thông thường output này là ở trong một form của
HTTP đáp lại gồm1 header theo sau là một khoảng trắng và một BODY. Trong khi
output của CGI header được format hoàn toàn , BODY của output được format theo
cách thức bạn chỉ rõ trong header . Ví dụ , BODY có thể chứa 1 HTML document để
client hiển thị .
† CGI HEADERS
CGI header chứa hướng dẫn tới server . Hiện thời có ba chỉ dẫn server hợp lệ :
Content-type ---- Location ---- Status
Một single header có thể chứa một hoặc tất cả các chỉ dẫn server . CGI script
của bạn sẽ xuất những chỉ dẫn tới server . Trong khi header được theo sau bằng một

khoảng trắng mà nó tách (separates) header từ BODY , output không chứa một
BODY .
† CONTENT_TYPES USED IN CGI HEADERS :
Trường content_type trong một CGI header chỉ rõ MIME type của dữ liệu bạn
đang gởi trở lại cho client . Thường dữ liệu xuất từ một script là một document được
format đầy đủ , ví dụ như một HTML document . Bạn có thể chỉ rõ điều đó trong
header như sau :
Content-type : text/html


† LOCATION USED IN CGI HEADERS :
Output script của bạn không là một document được tạo trong script đó. Bạn có
thể tham khảo bất kỳ document nào trên Web sử dụng trường Location . Trường
Location được sử dụng để xem một file bằng URL . Server xử lý mỗi Location trực
tiếp hoặc gián tiếp phụ thuộc vào vị trí của file . Nếu Server tìm thấy file cục bộ , nó
sẽ gởi file tới Client . Nếu không thì Server sẽ gởi URL một lần nữa tới Client và
Client sẽ nhận được file . Bạn có thể chỉ rõ một Location nhö sau :
Location : />† STATUS USED IN CGI HEADERS :
Trường Status được sử dụng để gởi một Status Line tới Server để chuyển tới
Client . Mã Status được biểu diễn như một mã three-digit theo sau bởi một chuỗi
thông thường nó được dùng để giải thích điều gì đã xảy ra . Số đầu tiên của một mã
Status cho thấy các Status như sau :
1xx chưa cấp phát
2xx thành công
3xx gởi lại một lần nữa
4xx Client bị lỗi
5xx Server bị lỗi
Nhiều mã Status được sử dụng bởi server, mã Status do bạn gởi tới 1 Client
thông qua CGI script của bạn thường là mã Client error . Ví dụ script không thể tìm
thấy 1 file và thay thế bằng cách không trả lại gì cả , bạn chỉ rõ rằng script xuất một

mã lỗi. Đây là danh sách của các mã Client error :
Status : 401 không được phép, xác nhận không thành công. User không được
phép truy xuất file và sẽ được truy xuất một lần nữa.
Status : 403 bị cấm. Yêu cầu không được chấp nhận , user không được phép
truy xuất file.
Status : 404 không tìm thấy. Chỉ rõ tài nguyên không thể tìm thấy.
Status : 405 method không được cho phép. Việc đưa ra method này không được
cho phép xử dụng .
† CLARIFYING CGI OUTPUT:
Việc tạo dữ liệu xuất từ một CGI script thì có vẻ dễ dàng. Tất cả những việc bạn
phải làm là định dạng dữ liệu xuất vào trong một header và body, sử dụng ngôn ngữ
lập trình.
Ví dụ nếu bạn muốn script xuất một tài liệu HTML xử dụng PERL nhö sau :
#!/usr/bin/perl
#create header with extra line space
print “content-type: text/html\n\n”;


#Add body in HTML format
print <<”MAIN”;
<HTML><HEAD><TITLE>Output from Script</TITLE> </HEAD>
<BODY>
<H1>Top 10 reason for using CGI</H1>
<P>10. Customer feeback.</P>
<P>9. Obtaning questionnaire and survey responses.</P>
<P>8. Tracking visitor count .</P>
<P>7. Automating searches.</P>
<P>6. Creating easy database interfaces.</P>
<P>5. Building gateways to other protocols.</P>
<P>4. HTML 2.0 image maps.</P>

<P>3. User authentication.</P>
<P>2. On-line order processing.</P>
<P>1. Generating documents on the fly.</P>
</BODY>
MAIN
Server xử lý dữ liệu xuất, thiết lập biến môi trường, tạo một HTTP header, sau
đó gởi dữ liệu tới client. Đây là những thứ trong HTTP header mà ta có thể thấy trên
một CERN Web server :
HTTP/1.0 302 Found
MINE-Version: 1.0
Server : CERN/3.0
Date :Monday, 4-Mar-96 23:59:59 HTS
Content-type:text/html
Content-length: 485
<HTML><HEAD><TITLE>Output from Script</TITLE> </HEAD>
<BODY>
<H1>Top 10 reason for using CGI</H1>
<P>10. Customer feeback.</P>
<P>9. Obtaning questionnaire and survey responses.</P>
<P>8. Tracking visitor count .</P>
<P>7. Automating searches.</P>
<P>6. Creating easy database interfaces.</P>
<P>5. Building gateways to other protocols.</P>
<P>4. HTML 2.0 image maps.</P>
<P>3. User authentication.</P>
<P>2. On-line order processing.</P>
<P>1. Generating documents on the fly.</P>
</BODY>




III . MÃ HOÁ DỮ LIỆU

Như trên đã nói , toàn bộ dữ liệu Client gởi cho Server đều được mã hóa .Cách
mã hóa phải dựa vào các quy ước về các ký tự cho phép trong URL , các ký tự dành
riêng …
URL(Uniform Resource Locator) là một cơ chế xác định các tài nguyên trên
mạng mà chỉ dùng một dòng ký tự Ascii (in được -prin _table ASCII ), để tham khảo
thêm hãy xem phần phụ lục về các thuật ngữ .
Một URL gồm 4 thành phần :
-Protocol : chỉ nghi thức dùng để truy xuất Server (HTTP,FTP,Gopher..)
-Domain name : domain name của site mà Server đang chạy.
-Port number : chỉ số port tương ứng với protocol mà server cung cấp cho từng
service, như 80 là port của HTTP,21 là của FTP…
-Location : vị trí của tài nguyên trên server.
Ví dụ:
http://www/test.htm
ftp://ttdt0/software/wed/Msoffice
http://199.25.7.200:1234/Project/Example.htm
a. Các ký tự cho phép trong URL:
Tất cả các ký tự ASCII in được đều được cho phép. Sự hạn chế này
Nhằm mục đích bảo đảm URL có thể được gởiù đi bằng mail.
Có nhiều chương trình xử lý mail không xử lý được ký tự 8 bit . Các ký tự không
được cho phép phải thể hiện dưới dạng %xx , với xx là mã ASCII của ký tự ở dạng số
hex.
b. Các ký tự bị cấm sử dụng trong URL :
Có rất nhiều ký tự ASCII bị cấm sử dụng trong URL, chỉ được thể hiện dưới
dạng mã hóa, lý do là các ký tự này có ý nghóa đặc biệt trong ngữ cảnh của URL .
Ví dụ : Trong Win NT hay UNIX , tên thư mục có thể có khoảng trắng và một số

chương trình lại dùng khoảng trắng để tách 2 chuỗi ký tự ra, do đó nó bị cấm sử dụng
trong URL để tránh những sai lầm đáng tiếc.
Các ký tự cấm bao gồm : 33 ký tự điều khiển ( giá trị hex 00-1F và 7F).Và các
ký tự sau : Ký tự Mã (hex)
TAB09SPACE20"22<3C>3E[5B\5C]5D^5E^60{7B17C}7D~7E
c. Các ký tự đặc biệt:


Có nhiều ký tự ASCII có ý nghóa đặc biệt , ví dụ ký tự "%" được dùng để đánh
dấu ký tự mã hóa, ký tự "/" đánh dấu chuyển sang một cấp bậc khác như chuyển thư
mục chẳng hạn .Các ký tự đặc biệt bao gồm các ký tự :% # / ? : @ = & ! , ( )
d. Nguyên tắc mã hóa :
Tất cả các ký tự bị cấm , có ý nghóa đặc biệt , nếu có trong URL phải được mã
hóa thành chuỗi %xx. Người viết các trang Web không cần để ý đến các công việc
này vì trước khi đẩy thông tin lên Server, browser tự thực hiện việc mã hóa .Tuy
nhiên, khi viết CGI Script bạn phải đặc biệt chú ý vì chính bạn phải giải mã dữ liệu
nhận được và hơn nữa nếu Script của bạn có tạo ra URL thì tự bạn phải mã hóa dữ
liệu của bạn .
1. Chuyển ký tự "%" (dấu phần trăm) thành chuỗi "%25".
2. Chuyển ký tự "-" (dấu trừ) thành chuỗi "%2b".
3. Chuyển ký tự "&" thành chuỗi "%26".
4. Chuyển ký tự "=" (dấu bằng) thành chuỗi "%3d".
5. Chuyển các ký tư đặc biệt thành chuỗi "%xx",với xx là mã ASCII
của ký tự.
6. Chuyển ký tự khoảng trắng thành ký tự "+" (dấu cộng).
7. Tất cả các ký tự có mã hex lớn hơn 7F, các ký tự điều khiển (có mã từ 00-31)
và các ký tự liệt kê trong bảng trên đều chuyển thành chuỗi "%xx" với xx là
mã ASCII của ký tự đó. Lúc này tất cả các ký tự đều đã được mã hóa. Nếu
dữ liệu là query string trong một ISINDEX query thì công việc mã hóa chấm
dứt ở đây, nhưng nếu là dữ liệu của FORM thì phải thực hiện thêm một số

bước nữa.
8. Các chuỗi name và value từ các thành phần của FORM được mã hóa như
trên.
9. Ghép các chuỗi name và value đã mã hóa thành một chuỗi name = value duy
nhất (điều này hoàn toàn hợp lí .Vì sau bùc 8 trong frame và value không
còn đấu "=" ).
10.Các chuỗi name = value của tất cả các thành phần trong Form được ghép
thành một chuỗi duy nhất nhờ ký tự "&" .
Ví dụ: Name1=valua1 & name2=value2

IV . CÁCH XÁC ĐỊNH CONTENT-TYPE
a. Server:
Đối với Server, để xác định Content-type, nó sẽ dựa vào phần mở rộng của tên
file.Ví dụ file có đuôi là html hay file chứa tài liệu HTML, tương ứng với Contenttype là text/html. Bạn có thể chỉ định nhiều loại file có cùng Content-type.Trong
trường hợp Server không xác định Content-type tương ứng với một loại file nào đó nó


sẽ lấy giá trị mặc định là text/plain. Điều này đôi khi sẽ gây hậu quả tồi tệ , do đó khi
tiến hành cấu hình Server, phải để ý đến mọi file đều thuộc một MIME_type nào đó.
b.Client:
Nếu client nhận file từ Gopher server hay HTTP server, nó sẽ đọc thông tin
trong repone header, HTTP sẽ gửi dòng Content-type còn Gopher sẽ có một cơ chế
khác để nhận ra loại dữ liệu. Nếu truy xuất file local hay bằng FTP, Client phải xác
định bằng phần tên mở rộng của file, do đó Client phải có một cơ sở dữ liệu để so
trùng phần tên mở rộng của file với các loại dữ liệu .
Cơ sở dữ liệu này được cất ở những chỗ khác nhau đối với từng Client.Với
Netscape, bạn sẽ thấy nó trong file NETSCAPE.INI và dễ dàng sửa đổi bằng cách mở
menu OPTION, chọn mục General Preferences…, rồi chọn menu Helper.Trong hầu
hết các trường hợp, bạn có thể điều chỉnh cơ sở dữ liệu này khi đang chạy browser.
 HTML FORM và MULTIPART MESSAGE

Khi viết CGI Script bạn không thể không biết đến Form. Form là công cụ phổ
biến nhất dùng để đưa dữ liệu lên Server . Nói cách khác Form là người bạn đồng
hành thân thiết của CGI. Sau đây chúng ta sẽ tìm hiểu sơ lược về các thành phần của
Form và cách liên kết nó với các CGI Script. Thông thường, khi viết một Scripts ,
người ta thiết kế một Form sau cho nó cung cấp đủ các thông tin mà Script đó cần để
xử lý, và Form này chỉ được được sử dụng một cách có ý nghóa đối với Script này mà
thôi. Dưới đây, ta sẽ trình bày tóm lược về Form, tuy nhiên nội dung cũng khá đầy đủ
để bạn có thêm công cụ hổ trợ cho công cụ viết các Script.
A. CẤU TRÚC CỦA MỘT FORM
Trong một Form, thường có 3 thành phần chính là TEXTAREA , SELECT và
INPUT. Có thể có nhiều tags giữa hai tags <FORM> và < /FORM>
- <TEXTAREA> : thể hiện một hộp soạn thảo văn bản cho user nhập vào
nhiều
dòng văn bản .
- <SELECT> : thể hiện một danh sách có nhiều phần tử cho user chọn lựa.
- <INPUT> : thể hiện nhập các dòng text , đánh dấu, các nút bấm…
Tóm tắt:
- Cách dùng :<FORM>…</FORM>
- Các tag có thể lồng vào : INPUT , SELECT , TEXTAREA , Hn , P , HR , DIR
, DL , MENU , OL , UL , ADDRESS , BLOCKQUOTE , PRE.
- Có thể nằm trong các tag :BLOCKQUOTE , BODY , DD , LI.
- Các thuộc tính : ACTION , ENCTYPE , |ISINDEX| , PRE.



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×