標籤: 暫無標籤

CGI意思為Common Gateway Interface,一種基於瀏覽器的輸入、在Web伺服器上運行的程序方法。CGI腳本使瀏覽器與用戶能交互,為了在資料庫中尋找一個名詞,提供你寫入的評論,或者從一個表單中選擇幾個條目並且能得到一個明確的回答。如果曾經遇到過在web上填表或進行搜索,就是用的CGI腳本。那時也許沒有意識到,因為大部分工作是在伺服器上運行的,看到的只是結果。

1 CGI -基本簡介

CGICGI
CGICGI
CGI腳本簡單地講是個運行在Web伺服器上的程序,有瀏覽器的輸入觸發。這個腳本通常象伺服器和系統中其他程序如資料庫的橋樑。

CGI腳本難道不是一個真正的腳本,按照伺服器的支持,可能是一個編譯好的程序或者批命令文件或者其他可執行的東西。為了簡單起見,統稱為腳本scripts。

CGI腳本是任何運行在web伺服器上的程序。CGI腳本是用下列兩種方法使用的:作為一個表單的ACTION或作為一個頁中的直接link。CGI腳本有伺服器調用,基於瀏覽器的數據輸入。

1、一個URL指向一個CGI腳本。一個CGI腳本的URL能如普通的URL一樣在任何地方出現。
2、伺服器接收請求,按照那個URL指向的腳本文件(注意文件的位置和擴展名),執行腳本。
3、腳本執行基於輸入數據的操作,包括查詢資料庫、計算數值或調用系統中其他程序。
4、腳本產生某種Web伺服器能理解的輸出結果。
5、伺服器接收來自腳本的輸出並且把它傳回瀏覽器,讓用戶了解結果。

2 CGI -配置條件

CGICGI
在使用CGI腳本之前,有兩件事也許要解決:CGI腳本是個高級的Web特性並且需要你和Web伺服器管理者一樣好的知識。

為了能寫和運行CGI腳本,你需要一個Web伺服器。不象通常的HTML文件,你不能在本地系統上寫或試驗CGI腳本;通過Web伺服器來做這個。但是即使你有一個Web伺服器,這個伺服器必須特別地為運行CGI腳本配置一下。那意味著你所有的腳本必須放置在一個叫做cgi-bin的目錄下。

在編寫CGI腳本之前,詢問伺服器管理者是否允許你安裝和運行CGI腳本,並且如果可以的話,他們必須放置在哪兒。還有,必須有個真正的Web伺服器,如果是FTP或Gopher伺服器,那就不能用CGI。

如果在自己的伺服器上運行,你必須特別地創造一個叫cgi-bin的目錄,並配置伺服器認可這個目錄為一個腳本目錄。也必須記住下面有關CGI腳本特點:

1、每個腳本是個程序,它運行在瀏覽器可以請求的系統上,執行時使用CPU時間和內存。如果有成打上千的這些腳本同時運行,系統將不忍負載直至崩潰。
2、如果你不仔細地編寫CGI腳本,你將有可能讓別人通過CGI腳本參數進入傷害系統。

你可以用你熟悉的任何語言編寫CGI腳本,只要腳本遵守下一節所陳列的規則即可,只要那個語言能在Web伺服器系統上運行。

在這本學習手冊中,僅用兩種語言編寫CGI腳本:UNIXshell和Perl語言。這個shell是適合在任何相近的UNIX系統上運行並且容易學習,但是處理複雜的情況就困難了。Perl,就要用這個語言了,它是免費的,這個語言是穩定和強大的,類似C,但它也是較難學習的。

為了運行任何一個CGI腳本,不管簡單或複雜的,伺服器必須設置成能夠運行他們,必須放置在一個特定的目錄,必須有一個依賴你伺服器設定的文件擴展名。如果你是租用伺服器,就要是否允許運行CGI腳本。如果你擁有自己的伺服器,檢查伺服器說明書是怎樣處理CGI腳本的。

3 CGI -輸出頭部

CGICGI
雖然CGI腳本可以讓你做任何事情,但是腳本的輸出還是必須有一個規定形式。這個「腳本輸出」意思是指腳本發回伺服器的數據。在UNIX系統中,輸出是發向標準輸出,伺服器從那兒檢測它。在其他系統和伺服器,腳本輸出也許不一樣了。這個頭部是實際不是文本的一部分,是伺服器與瀏覽器之間的信息協議,你實際看不到。

有三個類型的頭部:Content-type,Location,和Status。Content-type最普遍的。

有關content-type解釋可以見有關HTML的說明,一個你可以發出的特定編碼象這樣:

Content-type:text/html 輸出數據的類型是text/html;換句話說,他是個HTML文件。

通用格式和content-types。

4 CGI -輸出數據

輸出的數據應該符合你所規定的content-type;如果content-type是text/html,輸出安置應該是在HTML。如果content-type是image/gif,輸出應該是在一個二進位的GIF文件。

為了傳遞一個參數給腳本,可以在URL中使用插入腳本名詞和參數之間,用加號(+)表示每個單一的參數,如:
runmyscript
當伺服器接收到這個請求,它傳遞arg1,arg2,和arg3參數給腳本。你然後能在腳本中使用這些參數。

這個方法有時叫查詢,因為早期它用在搜索功能中。

5 CGI -登陸檢查

CGICGI
既然你知道怎樣使用參數,繼續上面的例子pinglaura,通過修改這個例子得到下面這個腳本pinggeneric。

#!/bin/sh

echo"Content-type:text/html"
echo
echo""
echo"AreYouThere?"
echo""
在上面的例子中,下一步應該是測試是否登陸,在這裡用參數${1}代替名字lemay,${1}作為第一個參數,${2}作為第二個,${3}作為第三個。
ison='who|grep"${1}"'

剩下的所有修改如下:

if[!-z"$ison"];then
echo"$1isloggedin"
else
echo"$1isn'tloggedin"
fi
echo""
修改HTML頁中的連接:
IsLauraLoggedin
修改為通用查詢功能后是這樣,比如查詢名字叫john的人是否登陸。

6 CGI -腳本輸出

CGICGI
有第二種方法傳遞信息給CGI腳本。它叫作路徑信息path information用作那些在腳本調用是不用變更的參數,象一個臨時文件名或調用腳本自己的文件名。正如你看到的,在上面的例子問號後面的參數是因用戶表單的輸入而改變的。路徑信息Pathinfo用作其他信息傳遞給腳本,實際上,你可以用它作任何事情。

路徑信息Pathinformation是一種不象通常參數腳本那樣頻繁傳遞信息的方法。路徑Pathinformation通常是指Web伺服器上的那些比如配置文件、臨時文件或者被腳本因問題調用的文件等等此類文件。

看下面一個路徑信息pathinformation例子,

當腳本運行時,在路徑中的信息將被放置於環境參數PATH_INFO。你能在腳本內容中使用這些信息。假設在多頁上已有多個連接到同一個腳本。能用這個路徑信息顯示那個有連接的HTML文件名。這樣,在完成處理腳本之後,當你發回一個HTML文件時,能在這個文件里包含一個連接,發回用戶一開始那個頁。

7 CGI -程序語言

CGICGI
既然CGI是一種程序,自然需要用編程語言來寫。你可以用任何一種熟悉的高級語言,C,C++,Cshell和VB。值得特別指出的,有一種叫Perl的語言。其前身是屬於Unix專用的高級語言,其具有強大的字元串處理能力而成為現在寫CGI,特別是表單類程序的首選。最近它已經有了Window95,和winnt版本。

可以在搜索程序里找到在那裡下載它。VB是Ms的殺手鐧,從目前的情況看,微軟公司正試圖使VB無所不能,自然也包括在Internet。請各位注意,VB開發的程序只能在windows平台上被執行,所以它有一定局限。CShell,經典的語言。可惜能做的事情不多,而且必須在Unix平台下。C,C++,真正的無所不能。可是在寫CGI的時候顯得非常難以掌握。特別是缺乏可以靈活使用的字元串處理函數。對程序員的要求也比較高,維護複雜。

CGI可以提供許多HTML無法做到的功能。比如:a.一個記數器b.顧客信息表格的提交以及統計c.搜索程序d.WEB資料庫。用Html是沒有辦法記住客戶的任何信息的,就算用戶願意讓你知道。用Html也是無法把信息記錄到某一個特定文件里的。要把客戶段的信息記錄在伺服器的硬碟上,就要用到CGI。這是CGI最重要的作用,它補充了Html的不足。是的,僅僅是補充,不是替代。

8 CGI -相關詞條

MYSQLIPICPALEXAPRSEO
CGIFSOFTPPOP3WCMECM
FLASHWEBGPUCPADIVCSS
HTMLBBS.NETXMLAJAXMD5
上一篇[復工]    下一篇 [丹尼斯·勞]

相關評論

同義詞:暫無同義詞