CGI

 

 

CGI (Common Gateway Interface,共用閘道介面)不是一種語言,而是一種象徵性的名稱。規定了 Http server CGI程式之間 傳遞參數和結果的方法。

 

一般使用者透過瀏覽器觀賞網頁時,瀏覽 器會和 Web 主機上的 Http server 建立一個連線,然後 Http server 會到一堆事先做好的 HTML 檔案中,找出使用者要看的網頁,回傳給瀏覽器,讓使用者觀賞。這種方式,由於 HTML 檔案是靜態的,所以使用者看過幾次就沒興趣了。因此就有人想到要透過程式來產生 HTML 內容,這樣就不會一成不變了,這就是 CGI的來由。在觀賞CGI網頁時,同樣地瀏覽器會和 Web 主機上的 Http server 建立一個連線, 但是接著 Http server 不是去抓檔案,而是去啟動一個 CGI 程式,然後將 CGI 程式所產生的內容當成 HTML 傳回給使用者瀏覽器。

 

CGIPHP同樣都可以做動態網頁那他們的差異在哪?

它是介於客戶端 (Client) 和伺服器端 (Server) 的一種通訊介面,你可以把它想像成家中的一個插座,我們透過插座接上電器,便可以與電力公司通電並使用我們的電器,所以你可以把你的電器解釋成 Client 端,電力公司解釋成 Server 端,而插座即是 Client 與 Server 之間的通訊介面,我們透過插座與電力公司連接進而通電,所以我們可以把插座解釋共用閘道介面,就如同 CGI 的運作原理是一樣的。

而 PHP 就是為了擺脫傳統使用 CGI 介面模式才能完成 Client 與 Server 之間互動所發展出來的高階程式語言,它並非透過所謂的共用閘道介面 (CGI) 才能與 Client 互動,而是真正的厥入於伺服器端程式 (HTTP Server 或 WWW Server),當我們執行 PHP 網頁時,HTTP Server 是將 PHP 預先戴入成為自已的模組,也就是說此時 HTTP Server 已經具備有執行 PHP 的能力,所以當 Client 要求執行 PHP 網頁時,HTTP Server 便可以直接回應資料請求。這類的程式語言我們稱之為 Server Side Script。你不能將 PHP 與 CGI 做比較,它們是完全不同的東西,就好像你拿一張椅子和一本書做比較,風馬牛毫不相干。

至於為什麼要叫做 CGI 程式?或 CGI 語言?,其實那是錯誤也不正確的,而來由則是因為很多人在編寫使用以 CGI 介面模式的網頁程式時,喜歡把副檔名寫為 CGI,例如 bbs.cgi、guestbook.cgi,例如最常用來編寫 CGI 的程式語言 Perl 而言,標準副檔名應該是 *.pl 才對,或是 Python 程式語言,標準副檔名應該為 *.py,但很多時候有些人為了訢求安全性或是一些障眼法,不讓所謂的怪客知道網站是用什麼語言編寫而成,所以都將副檔名改為 *.cgi,因為你讓怪客知道的越多,就越讓人有機可趁躦逃漏洞。也因為如此,久而久之人們 (其實只有台灣人) 的刻板印像,都直接把它叫成 CGI 程式、CGI 語言,甚至也正因為 Perl 的用途幾乎都被拿來使用在 CGI 上,因此很多人也把 Perl 認為是 CGI 或是說 CGI 就是 Perl,久而久之竟變成好像是對的,但那其實是很蠢的,試想前個例子,你若說成插座程式、插座語言是不是很好笑呢?

 

 

 

 

 


參考資料:

http://ind.ntou.edu.tw/~dada/cgi/

http://turtle.ee.ncku.edu.tw/~tung/cgi/cgi.html

 

http://www.study-area.org/coobila/category_CGI_u6559_u5B78.html

http://tw.knowledge.yahoo.com/question/question?qid=1607090303203&q=1005013102444&p=cgi

 

arrow
arrow
    全站熱搜

    flykof 發表在 痞客邦 留言(3) 人氣()