| 中文資訊科技應用 | 首頁 | 前頁 | 交流 | 搜尋 | 地圖 |
![]() |
html(網頁語言)技術讓經由網絡而來的資訊在瀏覽器上靜態地展示予瀏覽者,javascript 程式則讓瀏覽器根據瀏覽者的行為作出動態的反應,把靜態的網頁變得互動起來;cgi 一方面能展示資訊,也能反應瀏覽者的行為,但更重要的分別在於:cgi 程式在伺服器上 (server-side) 運行,而不像 html 或 javascript 般在瀏覽者的電腦中 (即所謂「用戶端 client-side」) 處理,這一分別,讓 cgi 程式不受瀏覽者電腦的不同規格所限制,而能具有較 html 或 javascript 更大的威力和效用。舊日 javascript 還未誕生的時候,要在網頁上出現任何動態效果,當時唯有用 cgi 了。
cgi 是「Common Gateway Interface」的簡稱,cgi 程式必須在網頁伺服器上運行,它一方面通過網頁伺服器收集瀏覽者在瀏覽器上輸入的資料,然後傳送給伺服器上的其他程式作分析或處理,並按需要把處理後的結果再經由網頁伺服器送返瀏覽器,以反饋予瀏覽者。
上圖可見,cgi 是網頁伺服器(用以發放網頁予瀏覽器)和其他伺服器/伺服器上其他程式(用以作其他資料處理工作)之間的中介,因此命名為「Interface」。
|
JavaScript / Jscript
|
CGI
|
|
|
運行
|
瀏覽者的電腦之中 (client-side)。 | 伺服器上 (server-side)。 |
|
語言
|
JavaScript 最早由 Netscape 公司開發及命名,現在由 Mozilla 公司繼續發展;微軟公司自行開發類似 JavaScript 的 client-side 程式語言,並命名為 Jscript。不過,不論是 Javascript Jscript 均是國際標準組織 ECMA 於 1999 年發布的 ECMA 262 language specification (ECMAScript Edition 3) 標準的產品。 |
很多編程語言均可以用以編寫 cgi 應用程式,如 Unix Shell、C、PERL、PHP 等。PERL 是現今最常用的一種,但是,已有愈來愈多運用 PHP 編寫的 cgi 應用程式。 微軟公司近年開發了一種功能與 cgi 類似的技術,也須在伺服器上處理資料,稱為「ASP (Active Server Page)」,有些人把 ASP 也視作 cgi 的一種,然而,二者技術其實完全不同,不應混為一談。 |
|
系統
|
絕大多數常用瀏覽器,如 NetScape/Foxfire、Internet Explorer 或 Opera。 |
大部份 UNIX 作業系統的伺服器都允許用家免費運行以 PERL 編寫的 CGI 應用程式;至於 PHP,則常只開放給高階用家(例如 hkusua 可讓學系運行 PHP 程式,教職員或學生個人網頁則只能運行 PERL 程式)、或以額外選購形式收費使用。 微軟公司的 ASP 則主要在 WINDOWS 作業系統的伺服器上運行。 |
|
難度
|
把握好 JavaScript / Jscript 編程語言便可處理大多數的有關程式。 | 除把握有關編程語言(如 PERL、PHP 等)外,還須了解網絡尤其伺服器的基本運作方式 |
|
功能
|
JavaScript / Jscript 本身已是一種很大威力的程式語言,但受限於其 client-side 特點,因此所有功能均只能在瀏覽者的電腦中處理。 | 基本上,JavaScript / Jscript 能做的,CGI 都能做到,而且沒有 client-side 的限制。 |
|
權限
|
由於 JavaScript / Jscript 本身己很具威力,又能瀏覽者電腦內發揮其功能,因此,為保安起見,瀏覽器都設置了停用 JavaScript / Jscript 的選項供瀏覽者有需要時選擇。 | 正由於 cgi 比 javascript 有更大的威力(例如把伺服器上的檔案全部刪除),因此有些伺服器限制甚至不准許使用者安裝 cgi 程式。 |
有甚麼是 cgi 可以做而 html 和 javascript 不能的呢?想像一下網上成績查詢系統。一個在WWW環境下的學生成績公佈欄必將成為日後各類成績發佈的主要手段,每位學生交將有自己的密碼,所以不必擔心成績上網之後的保密性。任何學生以任何形式上網進入本站點的成績查詢系統之後,只要輸入自己的系列、班別、學號及密碼,便可以利用這個學生績查詢系統查詢自己的成績,該設計思路與系統不僅適合各類高校內部的成績發佈,也適合於全國高考、統考等大規模考試的成績發佈。本文介紹的只是一個功能單一的查詢系統,若需完善還需加入成績維護部分,由成績管理者進行內容維護,包括成績輸入、修改、刪除等功能。
cgi 是高階的網頁技術,因此,應用 cgi,除了必須對編寫網頁、尤其 html 語言十分熟悉之外,還要求以下幾方面的認識:
安裝 cgi,包括「下載、設定、試用」等三大步驟;其中設定部份,包括:「伺服器設定、程式設定、網頁及啟動設定」等三部份;其中的伺服器設定﹐又再分為「目錄、上載及更改名稱、權限」等三環節。合共七個小步驟:
1. 搜尋並下載 cgi 程式及相關資料:
決定需要在網頁上加入怎樣的互動效果,然後選擇關鍵詞,到搜尋器上尋找。
2. 伺服器設定之一:設定相關目錄:
在伺服器的 cgi-bin 目錄中以 MkDir 上新增儲存程式及其他有需要的目錄。
3. 程式設定:
調校、設定程式中的有關參數。不同的程式,有不同的效果,同時,也有不同的要求。應用某一特定 cgi 程式 ,便須按照程式的規定(有關網頁多會說明清楚),設定網頁上的內容。有關 cgi 程式的調校項目包括:
a) 如程式以 PERL 編寫,程式的第一句說明哪裡找到運行 PERL 程式的資源,須因應伺服器修改;b) 程式涉及的網址;c) 程式顯示的內容。以下示例是一個十分簡單的 cgi 程式:
|
#!/usr/local/bin/perl print "Content-type: text/plain", "\n\n"; exit (0); |
5. 伺服器設定之二:上載程式及相關檔案:這部份的作用有點像 javascript 的程式部份,不同者在於,javascript 是把程式放置在網頁原始檔之內,而 cgi 則須上載到伺服器之上,而且一般規定必須放在名為 cgi-bin 的目錄之中。
6. 伺服器設定之三:更改有關屬性:這是最複雜也最重要的部份--上載到伺服器上的程式及其他相關檔案,必須經 chmod 指令修改屬性,方能運行。
7. 試用:試用看看有沒有錯誤,如有出錯,則重新檢視以上各步驟以除錯,然後把網頁以及有關附帶檔案都上載到伺服器上。
以上執行後輸出應該這樣:
|
Yes! Your web site is ready for running CGI program |
以上六個步驟,實際次序還要視具體情況和實際程式而有變化,有時候,還得反覆重試。
放在 hkusus 伺服器上的 cgi 程式,網址不能按一般的文件夾方式表示路徑,而必須以 cgiwrap 方式表達,否則無法運行。例如,一個於安裝在 cgi-bin/wiki 文件夾內的 wiki.pl 程式,網址為不是「http://web.hku.hk/~<login-name>/cgi-bin/wiki/wiki.pl」,而是「http://web.hku.hk/cgi-bin/cgiwrap/<login-name>/wiki/wiki.pl」:
|
http://www.hku.hk/jwilam/cgi-bin/wiki/wiki.pl |
|
|
http://web.hku.hk/~jwilam/cgi-bin/wiki/wiki.pl |
|
| 正確 | http://web.hku.hk/cgi-bin/cgiwrap/jwilam/wiki/wiki.pl |
步驟 1:
步驟 2:
步驟 3:
步驟 4:啟動
http://web.hku.hk/cgi-bin/cgiwrap/jwilam/ex31.cgi
步驟 5:
步驟 6:測試
http://web.hku.hk/cgi-bin/cgiwrap/jwilam/ex31.cgi
CGI Program - webpage counter
http://www.hku.hk/local/cc/training/imap_cgi_frame/ex-counter.html
Counting the Access Frequency of your Web Page
http://www.hku.hk/cc_news/ccnews71/counter.htm
Database
cgi 程式必須安裝到伺服器上,因此,安裝必須按照伺服器設定,換言之,不同伺服器,安裝方法會不完全相同。如果要在香港大學 hkusua 伺服器上安裝 cgi 程式,便必須清楚了解香港大學 hkusua 伺服器的特性和要求。
User Handbooks for Computer Center, HKU
http://www.hku.hk/cc/home/documentations/handbook.htm
FAQ on Web page Authoring
http://www.hku.hk/cc/faq/www/q1-5.htm
Setting up CGI Programs in Your Personal Web Page
http://www.hku.hk/cc_news/ccnews69/cgibin.htm
Introduction to CGI
http://www.hku.hk/local/cc/training/imap_cgi_frame/cgi.html
The Common Gateway Interface (CGI)
http://www.hku.hk/local/cc/course/cgi/cgi.html
Counter
Welcome to the YaBB User/Visitor Help and Administration/Installation Guide
http://www.hku.hk/ctvaa/board/YaBBHelp/index.html
A basic guide to running CGI scripts by EZscripting.co.uk
http://www.ezscripting.co.uk/cgibasicguide/
The CGI Resource Index (
http://www.cgi-resources.com/Programs_and_Scripts/Perl/
Matt's Script Archive
http://www.worldwidemart.com/scripts/
nms
http://nms-cgi.sourceforge.net/