Windows操作平臺(tái)下CGI的實(shí)現(xiàn)

字號(hào):

一、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