一、CGI概述
1.CGI概念
CGI即通用網(wǎng)關(guān)接口(Common Gateway Interface),它是一個(gè)WWW服務(wù)器主機(jī)對(duì)外服務(wù)的標(biāo)準(zhǔn)接口。一般來(lái)說(shuō),一個(gè)CGI接口的功能就是在超文本文件和服務(wù)器主機(jī)應(yīng)用程序間傳遞信息?!?BR> 2.CGI程序語(yǔ)言
事實(shí)上,任何一種程序語(yǔ)言,只要能在服務(wù)器主機(jī)上利用CGI接口來(lái)編寫(xiě)應(yīng)用程序,都可以叫作CGI程序語(yǔ)言。目前最為流行的CGI程序語(yǔ)言有四種:C、Shell、Perl和Visual Basic,其它一些語(yǔ)言也有許多人在用,如TCL、Frotran及AppleScript等。下文我們將介紹用C語(yǔ)言編寫(xiě)CGI的方法?!?BR> 3.CGI程序的執(zhí)行
CGI程序一般是個(gè)可執(zhí)行程序。編譯好的CGI程序一般要集中放在一個(gè)目錄下。具體存放的位置隨操作系統(tǒng)的不同而不同,例如UNIX系統(tǒng)下是放在cgi-bin子目錄下,而在Windows操作下(注意,這里不包括NT4.0)以Webstar或Website作WWW服務(wù)器,CGI程序都放在cgi-win下。CGI程序的執(zhí)行一般有兩種調(diào)用方式:一種是通過(guò)URL直接調(diào)用,如:http://gjy.sic.o.ml.org/cgi-win/cgi.exe,在Netscape的URL欄里直接寫(xiě)入上述描述就可以調(diào)用該程序:另一種方式,也是主要的方式是通過(guò)交互式主頁(yè)里的FORM欄調(diào)用,通常都是用戶在填完一張表后按確認(rèn)按鈕啟動(dòng)CGI程序。
4.CGI工作的主要流程
CGI工作的主要流程是:1.通過(guò)HTML獲取用戶輸入的信息;2.將用戶輸入的信息傳給服務(wù)器主機(jī)應(yīng)用程序(如數(shù)據(jù)庫(kù)查詢);3.將服務(wù)器處理結(jié)果通過(guò)HTML文件返回給用戶。
二、Windows平臺(tái)下CGI的工作原理
CGI主要的功能不外乎在服務(wù)器應(yīng)用程序和客戶之間傳遞信息。我們知道,通常CGI應(yīng)用在服務(wù)器和客戶端傳遞信息是通過(guò)輸入輸出流來(lái)實(shí)現(xiàn)的,如UNIX平臺(tái)下的CGI,通過(guò)讀取輸入流Scanf來(lái)獲取用戶輸入,讀取輸出流printf向用戶輸出結(jié)果。而Windows系統(tǒng)下CGI實(shí)現(xiàn)這一功能是通過(guò)文件系統(tǒng)來(lái)實(shí)現(xiàn),即通過(guò)一個(gè)特定的輸入文件來(lái)獲取用戶輸入的信息,通過(guò)一個(gè)輸出文件向用戶傳遞結(jié)果。
這里這個(gè)輸入文件是由WWW服務(wù)器生成的一個(gè)臨時(shí)文件,里面包含了各種環(huán)境信 壩沒(méi)淙胄畔?,以key=value的形式給出,類似于Windows里的INI文件。下面以一個(gè)典型的該文件為例說(shuō)明主要層的含義。
[CGI]
Request Protocol=HTTP/1.0
Repuest Method=POST
Executable Path=/cgi-win/cgitest.exe
Logical Path=/CGI
Physical Path=c:\httpd\htdocs\CGI
Server Software=Website /1.1(Shareware non-commercial License))
Server Name=gjy.sic.o.ml.org
Server Port=80
Server Admin=gjy@gjy.sic.o.ml.org
CGI Version=CGI/1.1 WIN
Remote Adress=2.02.114.2.182
system〗
Debug Mode=No
Output File=D:\hs06f12d.out
*/*=Yes
image/gif=Yes
image/x-xbitmap=Yes
image/jpeg=Yes
[Extra Headers〗
User-Agent=Mozilla/3.0 (Windows;I;32bit)
[Fotra rm Literal〗
textl=hello world
radio1=2
[Form External〗
field300chars=D:\hs06f12d.000 300
fieldwith l inebreaks=D:\hs06f12d.001 43
[Frm Huge〗
fiel d230
K=d:s06f12d.002 276920
1.CGI概念
CGI即通用網(wǎng)關(guān)接口(Common Gateway Interface),它是一個(gè)WWW服務(wù)器主機(jī)對(duì)外服務(wù)的標(biāo)準(zhǔn)接口。一般來(lái)說(shuō),一個(gè)CGI接口的功能就是在超文本文件和服務(wù)器主機(jī)應(yīng)用程序間傳遞信息?!?BR> 2.CGI程序語(yǔ)言
事實(shí)上,任何一種程序語(yǔ)言,只要能在服務(wù)器主機(jī)上利用CGI接口來(lái)編寫(xiě)應(yīng)用程序,都可以叫作CGI程序語(yǔ)言。目前最為流行的CGI程序語(yǔ)言有四種:C、Shell、Perl和Visual Basic,其它一些語(yǔ)言也有許多人在用,如TCL、Frotran及AppleScript等。下文我們將介紹用C語(yǔ)言編寫(xiě)CGI的方法?!?BR> 3.CGI程序的執(zhí)行
CGI程序一般是個(gè)可執(zhí)行程序。編譯好的CGI程序一般要集中放在一個(gè)目錄下。具體存放的位置隨操作系統(tǒng)的不同而不同,例如UNIX系統(tǒng)下是放在cgi-bin子目錄下,而在Windows操作下(注意,這里不包括NT4.0)以Webstar或Website作WWW服務(wù)器,CGI程序都放在cgi-win下。CGI程序的執(zhí)行一般有兩種調(diào)用方式:一種是通過(guò)URL直接調(diào)用,如:http://gjy.sic.o.ml.org/cgi-win/cgi.exe,在Netscape的URL欄里直接寫(xiě)入上述描述就可以調(diào)用該程序:另一種方式,也是主要的方式是通過(guò)交互式主頁(yè)里的FORM欄調(diào)用,通常都是用戶在填完一張表后按確認(rèn)按鈕啟動(dòng)CGI程序。
4.CGI工作的主要流程
CGI工作的主要流程是:1.通過(guò)HTML獲取用戶輸入的信息;2.將用戶輸入的信息傳給服務(wù)器主機(jī)應(yīng)用程序(如數(shù)據(jù)庫(kù)查詢);3.將服務(wù)器處理結(jié)果通過(guò)HTML文件返回給用戶。
二、Windows平臺(tái)下CGI的工作原理
CGI主要的功能不外乎在服務(wù)器應(yīng)用程序和客戶之間傳遞信息。我們知道,通常CGI應(yīng)用在服務(wù)器和客戶端傳遞信息是通過(guò)輸入輸出流來(lái)實(shí)現(xiàn)的,如UNIX平臺(tái)下的CGI,通過(guò)讀取輸入流Scanf來(lái)獲取用戶輸入,讀取輸出流printf向用戶輸出結(jié)果。而Windows系統(tǒng)下CGI實(shí)現(xiàn)這一功能是通過(guò)文件系統(tǒng)來(lái)實(shí)現(xiàn),即通過(guò)一個(gè)特定的輸入文件來(lái)獲取用戶輸入的信息,通過(guò)一個(gè)輸出文件向用戶傳遞結(jié)果。
這里這個(gè)輸入文件是由WWW服務(wù)器生成的一個(gè)臨時(shí)文件,里面包含了各種環(huán)境信 壩沒(méi)淙胄畔?,以key=value的形式給出,類似于Windows里的INI文件。下面以一個(gè)典型的該文件為例說(shuō)明主要層的含義。
[CGI]
Request Protocol=HTTP/1.0
Repuest Method=POST
Executable Path=/cgi-win/cgitest.exe
Logical Path=/CGI
Physical Path=c:\httpd\htdocs\CGI
Server Software=Website /1.1(Shareware non-commercial License))
Server Name=gjy.sic.o.ml.org
Server Port=80
Server Admin=gjy@gjy.sic.o.ml.org
CGI Version=CGI/1.1 WIN
Remote Adress=2.02.114.2.182
system〗
Debug Mode=No
Output File=D:\hs06f12d.out
*/*=Yes
image/gif=Yes
image/x-xbitmap=Yes
image/jpeg=Yes
[Extra Headers〗
User-Agent=Mozilla/3.0 (Windows;I;32bit)
[Fotra rm Literal〗
textl=hello world
radio1=2
[Form External〗
field300chars=D:\hs06f12d.000 300
fieldwith l inebreaks=D:\hs06f12d.001 43
[Frm Huge〗
fiel d230
K=d:s06f12d.002 276920

