CGI[通用網關接口]

CGI[通用網關接口]

CGI作為一個英文縮寫,該名詞有不同含義,包括“通用網關界面”、“計算機合成圖像/電腦三維動畫”、“計算機圖形接口標準”、“全球小區識別碼”等。CGI意思為Common Gateway Interface,一種基於瀏覽器的輸入、在Web伺服器上運行的程式方法。CGI腳本使瀏覽器與用戶能互動,為了在資料庫中尋找一個名詞,提供你寫入的評論,或者從一個表單中選擇幾個條目並且能得到一個明確的回答。如果曾經遇到過在web上填表或進行搜尋,就是用的CGI腳本。那時也許沒有意識到,因為大部分工作是在伺服器上運行的,看到的只是結果。

基本信息

運行環境

CGI 程式最初在UNIX 作業系統上CERN或NCSA格式的 伺服器上運行。

作業系統

(Windows NT及Windows 95的 伺服器上也廣泛地使用CGI 程式,同時它也適用於各種類型機器。

處理步驟

(1)通過Internet把用戶請求送到web伺服器。

(2)web伺服器接收用戶請求並交給CGI程式處理。

(3)CGI程式把處理結果傳送給web伺服器。

(4)web伺服器把結果送回到用戶。

編寫語言

CGI可以用任何一種語言編寫,只要這種語言具有標準輸入、輸出和 環境變數。對初學者來說,最好選用易於歸檔和能有效表示大量 數據結構的語言,例如UNIX環境中:

· Perl (Practical Extraction and Report Language)

· Bourne Shell或者Tcl (Tool Command Language)

· PHP(Hypertext Preprocessor))

由於C語言有較強的平台無關性,所以也是編寫CGI 程式的首選。

Windows環境中:

· C和C++

由於Internet上大部分 伺服器使用的是UNIX 作業系統,且幾乎任一UNIX作業系統中都有Bourne Shell,因而後面講述的例子中大部分是用 Bourne Shell編寫的。

最終Perl由於其跨 作業系統、易於修改的特性成為了CGI的主流編寫語言,以至於一般的“cgi 程式”就是Perl程式。

伺服器配置

CGI 程式不是放在 伺服器上就能順利運行,如果要想使其在伺服器上順利的運行並準確的處理用戶的請求,則須對所使用的伺服器進行必要的設定。

配置:根據所使用的 伺服器類型以及它的設定把CGI 程式放在某一特定的目錄中或使其帶有特定的擴展名。

⑴CREN格式 伺服器的配置:

編輯CREN格式 伺服器的配置檔案(通常為/etc/httpd.conf)在檔案中加入:Exec cgi-bin/*/home/www/cgi-bin/*.exec。命令中出現的第一個參數cgi-bin/*指出了在URL中出現的目錄名字,並表示它出現在 系統主機後的第一個目錄中,如:http://edgar.stern.nyn.***/cgi-bin/。命令中的第二個參數表示CGI 程式目錄放在系統中的真實路徑。

CGI目錄除了可以跟網路檔案放在同一目錄中,也可以放在系統的其它目錄中,但必須保證在你的系統中也具有同樣的目錄。在對 伺服器完成設定後,須重新啟動伺服器(除非HTTP伺服器是用inetd啟動的)。

⑵NCSA格式 伺服器的配置

在NCSA格式 伺服器上有兩種方法進行設定:

①在srm.conf檔案(通常在conf目錄下)中加入:Script Alias/cgi-bin/cgi-bin/。Script Alias命令指出某一目錄下的檔案是可執行 程式,且這個命令是用來執行這些程式的;此命令的兩個參數與CERN格式 伺服器中的Exec命令的參數的含意一樣。

②在srm.conf檔案加入:Add type application/x-httpd-cgi.cgi。此命令表示在 伺服器上增加了一種新的 檔案類型,其後第一個參數為CGI 程式的MIME類型,第二個參數是檔案的擴展名,表示以這一擴展名為擴展名的檔案是CGI程式。

在用上述方法之一設定 伺服器後,都得重新啟動伺服器(除非HTTP伺服器是用inetd啟動的)。

環境變數列表

SERVER_NAME:運行CGI序為機器名或IP位址。

SERVER_INTERFACE:WWW 伺服器的類型,如:CERN型或NCSA型。

SERVER_PROTOCOL:通信協定,應當是HTTP/1.0。

SERVER_PORT:TCP連線埠,一般說來web連線埠是80。

HTTP_ACCEPT:HTTP定義的 瀏覽器能夠接受的 數據類型。

HTTP_REFERER:傳送 表單的檔案URL。(並非所有的 瀏覽器都傳送這一 變數)

HTTP_USER-AGENT:傳送 表單的 瀏覽的有關信息。

GETWAY_INTERFACE:CGI 程式的版本,在UNIX下為 CGI/1.1。

PATH_TRANSLATED:PATH_INFO中包含的實際路徑名。

PATH_INFO: 瀏覽器用GET方式傳送數據時的附加路徑。

SCRIPT_NAME:CGI 程式的路徑名。

QUERY_STRING: 表單輸入的數據,URL中問號後的內容。

REMOTE_HOST:傳送 程式的 主機名,不能確定該值。

REMOTE_ADDR:傳送 程式的機器的IP位址。

REMOTE_USER:傳送 程式的人名。

CONTENT_TYPE:POST傳送,一般為application/xwww-form-urlencoded。

CONTENT_LENGTH:POST方法輸入的數據的位元組數。

優點

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

使在 網路伺服器下運行外部分 應用程式(或 網關)成為可能。CGI-BIN 目錄是存放CGI 腳本的地方。這些 腳本使Web 伺服器和 瀏覽器能運行外部 程式,而無需啟動另一個 程式。

它是運行在Web 伺服器上的一個 程式,並由來自於瀏覽者的輸入觸發。CGI是在HTTP 伺服器下運行外部程式(或 網關)的一個接口,它能讓網路用戶訪問遠程系統上的使用類型程式,就好像他們在實際使用那些遠程計算機一樣。

CGI能夠讓瀏覽者與 伺服器進行互動,如果你曾經遇到過在網路上填表或者進行搜尋,就很有可能就是用的CGI。

儘管CGI易於使用,但是當大批人同時使用一個CGI 應用程式是會反應較慢, 網路伺服器 速度也會受到很大 影響。CGI 應用程式的優點是可以獨立運行。

CGI 應用程式可以由大多數的 程式語言編寫,如Perl(Practical Extraction and Report Language)、C\C++、Java 和Visual Basic等。不過對於那些沒有太多編程經驗的 網頁製作人來說,實在是一個不小的難題。

ASP

ASP(Active Server Pages): 活動伺服器頁面,就是一個 編程環境,在其中,可以混合使用HTML、 腳本語言以及組件來創建伺服器端功能強大的Internet 應用程式。如果你以前創建過一個站點,其中混合了HTML、 腳本語言以及組件,你就可以在其中加入ASP 程式代碼。通過在HTML頁面中加入 腳本命令,你可以創建一個HTML用戶界面,並且,還可以通過使用組件包含一些 商業邏輯規則。組件可以被 腳本程式調用,也可以由其他的組件調用。

ASP的工作原理:

當在Web站點中融入ASP功能後,將發生以下事情:

1、用戶調出站點內容,默認頁面的擴展名是.asp。

2、 瀏覽器從 伺服器上請求ASP檔案。

3、 伺服器端 腳本開始運行ASP。

4、ASP檔案按照從上到下的順序開始處理,執行 腳本命令,執行HTML頁面內容。

5、頁面信息傳送到 瀏覽器。

因為 腳本是在 伺服器端運行的,所以Web 伺服器完成所有處理後,將標準的HTML頁面送往 瀏覽器。這意味著,ASP只能在可以支持的 伺服器上運行。讓 腳本駐留在伺服器端的另外一個益處是:用戶不可能看到原始 腳本程式的代碼,用戶看到的,僅僅是最終產生的HTML內容。

PHP:Hypertext Preprocessor

PHP 是一種 伺服器端的,嵌入HTML的 腳本語言。PHP區別其他像 客戶端Javascript的地方是它的代碼在 伺服器端執行.PHP能做什麼?

最低水平,PHP可以做任何其他CGI 程式所能做的事,例如收集表格數據,生成 動態頁面內容,或者收發cookies.可能最強大,最有意義的特性是PHP支持大範圍的 資料庫.書寫一個 支持資料庫的Web 頁面是難以置信的簡單。

下面是當前支持的 資料庫:

Adabas D InterBase Solid

dBase mSQL Sybase

Empress MySQL Velocis

FilePro Oracle Unix dbm

Informix PostgreSQL

PHP通過協定也支持與其他服務的"交談",像IMAP,SNMP,NNTP,POP3,甚至是 HTTP. 你也可以打開晦澀的 網路接口和其他協定互動。

PHP的簡要歷史

1994年秋季,Rasmus Lerdorf 開始構思 PHP. 早期的非發行版本被用在他的主頁上,以追蹤誰在看他的線上簡歷. 1995年年初第一版本出台,當時PHP只被認為是個人主頁開發工具.它由一個非常單純的只能理解很少數特殊宏的分析引擎和 一些用在主頁後端通用的工具組成.如留言簿,計數器和其他一些東西.這個分析器在1995年年中被重寫並被命名為 PHP/FI 第二版. FI來自 Rasmus 寫的另外一個包,用於解釋 html 形式的數據.他結合了個人主頁工具 腳本和形式解析器,並加 上mSQL支持.這樣就產生 PHP/FI 了. PHP/FI以令人驚奇的步調成長,人們開始把自己的代碼貢獻給它。

很難給出它的硬統計表,但可以估計在1996年末,整個世界至少有15,000個網站在用PHP/FI.到1997年年中,這個數字已經超過50,000了. 而在此時PHP的發展也發生了變化.由Rasmus自己偏愛的和幾個人開發的項目變成一個更有組織的團 體成就.Zeev Suraski和Andi Gutmans重寫了解析器.這個新的解析器成為PHP版本3的基礎.許多有用的代碼從PHP/FI 繼承到PHP3,並且很多是完全重寫的。

今天(1999年年中)不管是PHP/FI或PHP3與很多商業產品捆綁在一塊,例如C2級強度的Web 伺服器和 紅帽子Linux. 根據NetCraft提供的數據推斷,保守估計全世界套用PHP的網站已超過150,000個.由此看來,它比在網際網路上運行Netscape 的旗艦企業伺服器的站點還多。

相關詞條

相關搜尋

熱門詞條

聯絡我們