首頁
 多媒體廣場
偶像台
妙韻送知音
古典音樂放送
兒歌金曲放送
電子賀咭
玩Games堂
遊戲下載
遊戲網站連結
電腦遊戲密技
美味食譜
孕育篇
嬰兒篇(0至3歲)
幼兒篇(4至6歲)
兒童篇(7至12歲)
青少年篇
家長篇
家庭篇
心靈雞湯
社會工作理論
社會工作實務
社會工作研究
社會工作資源
心理學
精神醫學
實用資源總覽
電腦教學
硬體教室
軟件應用教學
網路研習室
自學網頁製作
 打工仔廣場
工作簡介
求職指南
職位徵求
勞工法例
法律服務
繽紛樂園
青少年活動推介
笑看人生
新聞討論區
福音餐會
網上交談室
議員會客室
本站告示板
泥上鴻爪留言冊
尋找引擎總覽

你是第 個訪客

CGI教學

電腦神童教你寫CGI
浩二工作室
聽說,可供您在該站實驗有趣的html喔!有JAVA、CGI、VRML、PERL、HTML等作品。
太陽黑子CGI 網路教學   - CGI、SSI(影像轉換器) 應用教學及程式下載。
手寫體王朝 - 提供 PERL/CGI 程式資源搜索。
紅雪網頁 (RedSnow)
網頁進階技巧,JavaScript問答集/HTML/CGI Perl問答集,電子信箱等免費資源,提供特殊留言板/計數器/線上人數..等CGI下載
臥龍小三CGI天堂 - 提供免費公用留言板申請服務和PERL/CGI 程式及資源。
馬賽克的家
FrontPage 教學JavaAppletJavaScript
CGI實驗室 - 程式寫作實務。
Form與CGI 的對話 - 利用Shell Script, Perl等撰寫的實例。
 
CGI Scripts For Windows NT/95
各種CGI 程式資源
CGI 實驗室
Matt's Script Archive
心有獨中主目錄
CGI (Free CGI.lnk)
BeSeen.com
光鉅網際Java 移動字幕 顯示CGI應用
如何在WWW下建立雙向溝通之應用環境
  1. Welcome to Eddie's Home / CGI
  2. Frame
  3. Table
  4. Chinese LEDSign by Jyh-Shin Shue
  5. Another Date & Time Display
  6. Date & Time Display on the Status Bar
  7. 上手易科技首頁 為 Windows NT Server 所設計的 Web Server
  8. 全新中文版 Perl-FAQ
    perlfaq 總篇
    perlfaq 第一篇
    perlfaq 第二篇
    perlfaq 第三篇
    perlfaq 第六篇
    perlfaq 第七篇
    perlfaq 第八篇
    perlfaq 第九篇
  9. 中文版 Perl CGI 程式寫作常問問題集 (Perl CGI Programming FAQ)
  10. CGI Programming on the Web (英文)

 

CGI常見問題

衣劍舞CGI常見問題
Q1.如何知道Perl,寄信,日期的路徑
Q2.什麼是絕對路徑(真實路徑),要如何得知我的絕對路徑?
Q3.如何用ASCII(純文字模式)上傳
Q4.如何更改檔案屬性(chmod)為何要更改檔案的屬性?
Q5.要到那裡尋找我要用的CGI程式?
Q6.如何在自己的Win95/98上測試CGI?
Q7.CGI不能執行,出現500 Internal Server Error?
 

教 CGI 或 Perl的線上資料

 
NCSA 的 CGI 文件
Forms 入門指引
許多 CGI 資源結點
原始的 CGI FAQ
Perl FAQ
由 Lincoln Stein 所著,一份很完整的WWW 及 CGI 操作安全 FAQ
Paul Phillips 所著,CGI 安全 FAQ
WWW FAQ (英文)此份 FAQ 的中譯版可在此 處取得。

 

捲動次數 大家請一齊讀「師哥德」英俊英英俊、好人好人好好人、天文地理、四書五經.....樣樣精通.... 」

捲動的背景色 大家請一齊讀「師哥德」英俊英英俊、好人好人好好人、天文地理、四書五經.....樣樣精通.... 」

捲動方向 大家請一齊讀「師哥德」英俊英英俊、好人好人好好人、天文地理、四書五經.....樣樣精通.... 」

捲動寬度與高度值
大家請一齊讀「師哥德」英俊英英俊、好人好人好好人、天文地理、四書五經.....樣樣精通.... 」

1. 一些設計 CGI 程式必備的知識 CGI Basic Knowledge

學CGI程式必需知道的事情

選擇你慣用的程式語言(當然必需是 CGI程式可使用的電腦程式語言)、作業平台環境(例如: 網路上最常見的UNIX、甚至WIN NT),在此之前你還需有HTML(超文字標記語言: 是種以標籤方式使用的語言,但他不是個程式語言。)的基礎知識,
最簡單且最省錢的方式是在自已電腦上架設網頁伺服器軟體不需連接上網路即可寫作網頁或CGI。
至於架設網頁伺服器軟體在本網頁的寫CGI相關工具軟體下載章節裡會提供給大家參考、下載使用。
如果您不需考慮ISP連線上網路費用的話也可以申請一些像 http://www.prohosting.com/ 讓人免費使用CGI執行權的網頁。

2. 什麼是共同閘道介面? Common Gateway Interface

共同閘道介面 Common Gateway Interface

CGI 是 Common Gateway Interface 的簡稱,一般中譯為:共通閘道介面。
Common 是指共通的、不限於一種作法的意思,在這裡指的是語言的獨立性,換言之,可以用任何一種程式語言來實作。
Gateway 是說伺服器的應用能力是經由擴充得到的,它將查詢等要求交由外部程式處理,處理完了之後,再將結果傳回。
Interface 是指一種介面的意思,符合此一介面標準,便可以輕鬆地製作外部程式,而無需去擔心或處理低階的問題。
由於網際網路上的 WEB 伺服器 (我們稱為 Server 端) 採用 HTTP 協定,該協定只是單純的回應客戶端 (我們稱為 Client 端,通常是使用者的瀏覽器) 的文件要求,即 Client 端要求什麼,Server 就傳回什麼,因此在 HTTP 協定下,Server 只有傳回靜態文件的能力而已,無法像各種平台上的伺服器一樣,藉由執行各類應用程式,來達成客戶端的各種查詢或交易等要求。
為了彌補此一缺點,WEB 伺服器勢必要藉助外部程式來執行 Client 端的要求,再將處理結果傳回給 Client 端。例如:使用者輸入一個關鍵字,要求列出某些書籍的作者或書名,Server 接收到這個關鍵字之後,交由外部程式去處理,通常是由資料庫中去尋找,最後將尋著的結果回應給 Server,Server 再將它傳回給瀏覽器端的使用者。
CGI 就是提供給外部程式的一種介面,只要符合此一介面標準,程式設計師便可以輕鬆地使用該平台上支援的任何一種程式語言來撰寫外部程式,於是我們說:凡是符合 CGI 介面標準的外部程式,就稱之為 CGI 程式。
撰寫 CGI 程式,常見的語言有 Perl、Python、C、C++、VB,甚至某些 UNIX 中的 shell script 都有人使用。
我們可以這樣來看待 CGI 以及 CGI 程式:
CGI 程式是 WEB 伺服器應用能力的擴充(Extension),而 CGI 則是此一擴充能力的介面,熟悉瞭解此一介面的原理及運作方式,我們便可以為 WEB 伺服器建立即時互動的能力,以滿足客戶端的要求。

3. 有那些程式語言可以寫 CGI? Program Languages

CGI 可以使用的電腦語言 Computer Language

  大部份的CGI程式都是AppleScript、C、C++、Perl、TCL、任何一種UNIX shell、或是Visual Basic
來寫作的。這些語言不是唯一可以用的程式語言,但是他們都是最常用的語言之一。我們可以選擇任何語言來
撰寫程式,但是有兩個好理由支持我們使用上述這些常用的語言之一來作為開發工具。

  首先,使用分享程式碼來寫作CGI程式效率較高。很多常用的功能已經在全球資訊網上有程式碼可直接引
用了。另外有好幾個程式碼已經是免費開放讓其他的程式撰寫者來引用。只要在資訊網上多逛逛,就能找到可
以引用的程式片段。在附錄中的 "Script Archive" 一節裡,有一份列表記載了很多可引用的程式碼的位置。
表格、存取記數器、還有shopping cart,上述這些只是極少數可以引用的程式碼的例子,其他還有很多,只
是無法一一例出。大部份的這些分享程式碼甚至還給予使用者原始碼(source code),能夠修改來適應各個不
同的系統。我們可以想像得到,絕大部分的CGI程式都是以上述這些語言的其中之一寫成的,所以呢,如果你
已經會用其中任何一種的話,趕快裝好它吧!這些程式的列表也收集了很多有用的函式庫可以拿來處理表格和傳
回正確的標題。

4. 什麼是CGI的環境變數? Environment Variables

CGI 環境變數 CGI Environment Variables
CGI 環境變數   當瀏覽器向伺服器要求一個CGI程式,伺服器是以無狀態環境(Stateless Environment)來開始執行這CGI程式的。
這表示CGI程式是在自已的狀態或是環境下執行的。它並不會承繼伺服器程式所使用的執行環境。因為這樣伺服器可以在同一時間接受許多瀏覽器的要求,並執行同一個CGI程式而不會有任何衝突。
這些同時在運作的CGI程式相互之間必需是獨立的,否則可能會有問題發生。正因為伺服器為CGI程式建立了一個新的環境。它把幾乎所有的資訊都放在環境變數裡。
AUTH_TYPE 包含了所有用來確認瀏覽號器的認證方法。其中一個例子是username/password的格式。
CONTENT_TYPE 使用者所提供用來要求CGI程式的內容,是經由瀏覽器傳送過來的。因為這個內容是以字串(string)的方式來傳遞的,所以這個變數的值單位是一個位元組(byte),每個位元代表一個字元。
CONTENT_TYPE 包含了伴隨著瀏覽器對CGI程式要求所使用的資料種類。如text/html或者是image/jpeg。
GATEWAY_INTERFACE 代表使用中的CGI版本。對1.1版的CGI而言,變數是寫成CGI/1.1。
PATH_INFO 包含了CGI程式的路徑額外資訊。一般都是連CGI程式會用到的文件所在的虛擬路徑。這個值從要求CGI程式的URL中附加的資訊所設定的。看一看PATH_TRANSLATED作為範例。
PATH_TRANSLATED 變數值為從PATH_INFO的虛擬位址轉換過來的實體位址。假設文件檔的根目錄是/usr/www/這個目錄。對http://www.robertm.com/cgi/bin/calculate.pl/cgi-data.txt這個URL位址而言,PATH_INFO這個變數的值是/cgi-data.txt,而PATH_TRANSLAED這個變數的值是/usr/www/cgi-data.txt。
QUERY_STRING 當使用者的要求方法是GET時,包含了使用者提供的資料。這個資料會加一個問號在參考到的URL。如: http://www.robertm.com/cgi-bin/answer.pl?state=CA,QUERY_STRING這裡是"state=CA"。
REMOTE_ADDR 儲存了向CGI程式作要求的灠覽器所在的機器之IP位址。
REMOTE_HOST 儲存了向CGI程式作要求的瀏覽器所在的機器之Domain Name。如果找不到的話,就只使用REMOTE_ADDR而不用REMOTE_HOST。
REMOTE_IDENT 只有當伺服器支援認證程序時,儲存使用者的登錄名字。
REMOTE_USER 儲存為了身份的確認而由Web瀏覽器選定的使用者名稱。只有在伺服器支援身份確認和CGI程式是被保護的這個變數才被使用。
REQUEST_METHOD 包含了要求CGI程式的要求方法。可以是任何一個http要求方法如GET、HEAD、POST、PUT等等。
SCRIPT_NAME 儲存被執行的CGI程式名稱和虛擬路徑。只用在自我參考的URL。
SERVER_NAME 儲存伺服器所在機器的名字,不管是Domain Name或是IP位址。
SERVER_PORT 儲存瀏覽器送要求訊息到伺服器時所用的連接埠號碼。
SERVER_PROTOCOL 儲存向CGI程式作要求的傳輸協定的名稱和版本。在大部分的情形下,這個變數的值都是http傳輸協定,如HTTP/1.0。
SERVER_SOFTWARE 儲存執行CGI程式的Web伺服器軟體的名稱及版本。如: Netscape Communication Server 1.0版,變數的值為Netscape-Commuications/1.1。也就是架網站伺服器的軟體及版本。
http 要求標頭環境變數 除了CGI環境變數之外,還有有關伺服器接收瀏覽器所傳來HTTP要求標頭相關的變數。這些變數也是屬於環境變數的範圍之內,都以HTTP_*為開頭。
HTTP_ACCEPT 儲存了一連串以逗號分隔的瀏覽器能接受的媒體類型。audio/basic、image/gif、text/*、*/*。最後兩個例子用了萬用符號*,*是任何字串或字元的標準輸入。text/*表示所有型態的文字都可以。而*/*則表示瀏覽器會接受任何一種型態的內容。
HTTP_ACCEPT_ENCODING 儲存從伺服器端傳往瀏覽器端所用的加碼方式。如: x-zip、x-stuff和x-tar。
HTTP_ACCEPT_LANGUAGE 儲存了瀏覽器所使用的國家語言種類。然而以不在這個變數的範圍之內的語言作回應也是可以的。像en_UK,代表的就是English of the United Kindom。
HTTP_AUTHORIZATION 包含了瀏覽器的授權資訊。是瀏覽器用來向伺服器取得認證許可的變數。這個變數並沒有特定的格式,我們可以使用任一種可被認證的方式。舉一個例子,像user/password格式,以作者的例子變數值就是robertm/作者的密碼。
HTTP_CHARGE_TO 這一個變數的格式尚未統一。用處是可以向使用者作收費紀錄。
HTTP_FORM 包含了提出要求的使用者的電子郵件位址。以作者為例: robertm@deltanet.com 或是 rmcdanie@primenet.com。
HTTP_IF_MODIFIED_SINCE 儲存了一個符合APPANET標準的日期,如星期幾,DD-Mon-YY HH:MM:SS 時區。這個值可以和GET這個要求方法作結合,用來退回太久沒作修正的被要求文件檔。
HTTP_PRAGMA 儲存了任何對伺服器所下的特殊指令。如: 一個proxy伺服器對要求標題就有一個本變數的值: no cache。意思是proxy伺服器對每一份文件的要求都必需向真正的Web伺服器作要求,而不是從硬碟中拿出過期的快取(cache)文件。
HTTP_REFERER 儲存了內容裡有現在正被要求的文件檔的文件的制式資源辨識子(uniform resource identifier,URI,是URL的超集合)。例如http://www.thepalace.com/web-page.html。
HTTP_USER_AGENT 儲存作出要求的瀏覽器的軟體名稱。舉例來說,像Moailla/2.0 (Win95),就是Netscape在Win95上2.0版的瀏覽器。
parsed標頭   每一個CGI程式都必需在它所要傳回的資料之前加上parsed標頭。parsed標頭就是被伺服器說明的CGI程式輸出結果中的幾行程式碼。parsed標頭的格式和任何可以傳送環境變數的HTTP標題都一樣。所有的CGI環境變數都可以在psrsed標頭中使用。parsed標頭之後必需馬上有一行空白列。在parsed標頭中任何不是伺服器可接受的指令,都會被當做HTTP回應標頭的一部份而傳回給瀏覽器。目前的CGI版本,1.1版,定義了三個伺服器的指令在以下表格中。
Content-type 告訴伺服器由CGI程式傳回資料的MIME類型。
Location 代表的是虛擬路徑或你的CGI程式要傳回的文件之URL。
Status 傳回HTTP狀態列給伺服器,伺服器再把它傳給瀏覽器。狀態列由一個三位元的狀態碼和reason string所組成。像404 Not Found和403 Forbidden 都是其中一種。
以下是一個CGI程式傳回竹parsed標頭範例:

#!/usr/local/bin/perl

print "Content-type: text/html\n\n";

第一行 #!/usr/local/bin/perl 是指perl直譯器執行路徑,必需依然系統設定的不同更改。

不經過伺服器的傳回方式   大部分的伺服器都允許CGI程式直接把執行結果傳回給瀏覽器。以Netscape Commuication Server 為例,可以在你的CGI程式的程式名之前加上 nph-,來表示你的程式要把結果直接傳回給瀏覽器。當CGI程式直接把執行結果傳回給瀏覽器時,程式本身必需去產生出一個包含正確HTTP回應標題和nonparsed標頭。
HTTP回應標頭 意義
ALLOWED 對提出要求的瀏覽器列舉出哪些要求方法是被允許的。像GET、HEAD、POST和PUT都是。
CONTENT-ENCODING 列舉出哪些加碼方法是可用的。x-zip、x-stuffit和X-tar都是其中之一。
CONTENT-LANGUAGE 指出傳回的文件是以何種語言撰寫的。英文 (English) 就是其中一種。
CONTENT-LENGTH 指出傳回資料的大小 (以 byte 作單位)。
CONTENT-TRANSFER-ENCODING 代表的是在伺服器和瀏覽器之間資料的傳輸是以何種型式在進行。預設值是binary。
CONTENT-TYPE 說明了被傳送的資料是何種類型的。像text/html和image/gif等等皆是。
COST 代表的是存取這一份資料所要花費的金額。但這個格式尚未正式被採用。
DATE 代表這份被要求的文件的產生日期,日期的格式是APPANET的格式。
DERIVED-FORM 包含了被要求的文件之版本編號。允許可編輯的文件作版本控制。
EXPIRES 指的是被要求的文件的期滿時間。超過這個日期這份文件就必需要重新存取一次。這個標頭主要是用在快取(cache)功能,日期的格式還是ARPANET格式。
LAST-MODIFIED 本文件最後一次被更改的日期。日期的格式是ARPANET格式。
LINK 包含了被傳回的文件的資訊。可以利用這個標頭來知道像這份文件引用了哪一個URL,或是這份文件的作者。
MESSAGE-ID 包含了HTTP訊息 (message) 的唯一辨識子。
PUBLIC 相當類似於ALLOW回應標頭。但是它列舉出了每一個人都能用的要求方法而不是只有瀏覽器可以使用的。
例子有: GET、HEAD和TEXT-SEARCH。
TITLE 包含了被傳回文件的標題。對一個HTML格式的檔案而言,相當於是在兩個標籤之間的值 "免費CGI程式下載"。
URI 給出可以找到被要求的文件的 URI (uniform resource identifer)。這個值不一定是使用者所給的URL。但是會和傳回來的URL幾乎相同只是帶有些許的小差異。
舉例來說: http://www.robertm.com/Group-one/sectionl.htmlvary=language,version。這個值可能是和URL完全相同或是在language或version上有一點變化。
VERSION 定義出一份文件可以被更改的版本。
這個標頭的格式目前尚未有明確的定義。
我們不必為了得到正確noparsed標頭而去提供每一個HTTP回應標頭。舉例來說: 一個有正確的nonparsed標題的CGI程式看起來就該像下面這個程式。

#!/usr/local/bin/perl

print "HTTP:/1.0 200 ok\n";
print "Server: Netscape-Communications/1.1\n";
print "Content-type: text/html\n\n";

5. 什麼是真實路徑、虛擬路徑?

虛擬路徑
指的就是文件或目錄所在的網址。
範例: http://thor.prohosting.com/~morii/cgi/ 緒如此類的型式。
 
真實路徑
真實路徑就是文件或目錄在伺服器電腦裡的路徑。
範例: /user/www/ 緒如此類,這是在unix主機下的型式。

 

CGI產地搜尋

衣劍舞CGI產地搜尋繁體中文站| 簡體中文站| 英文站| CGI資源蒐集| CGI程式下載| CGI教學網站

CGI免費資源

ASP 技術網站中國大陸的免費 ASP 下載站.
好易 CGI 工廠中國大陸的免費 CGI、ASP 下載站.
FreeCode外國的免費 CGI 下載站.
CGI 中文索引大全中國大陸的免費 CGI 下載站.
CGI Resource外國的免費 CGI 下載站.
CGI City外國的免費 CGI 下載站, 蠻不錯的喲!!
中國 CGI 專門店中國大陸的免費 CGI 下載站.
Thanks Show台灣知名的免費 CGI 下載站.
一山草堂中國大陸的免費 CGI 下載站.
真實人生提供許多 Java Applet 程序下載.
PerlPerl 的官方站.
WebScripts:-免費CGI及問答集(英)
The Scripts Home:-免費的CGI下載(英)
Zone Coaster's CGI:-提供16個免費的CGI程式讓您使用(英)
Dave's Perl&CGI :-免費的CGI程式下載和教學(英)
 
網路夢想家
提供各類資源(cgi,java,midi,e-mail,網頁,計數器,計數器數字,撥接.熱門檔案..)及電子賀卡服務..等
 
郵票欣賞 提供各種鍍金郵票,及留言板CGI下載... 
小周的秘密基地
網站有CGI 程式下載區JAVA 資料庫JAVA ScriptSambar4.1說明網頁參考網站顏色範本1顏色範本2
 
軟藝工作室
免費資源軟體下載豐富的動畫及背景圖庫JavaScript及JavaApplet,CGI下載CGI教室.
showJavascriptCGI搜尋引擎(NOVA)CGI相關筆記CGI相關程式(PERL)
 
夢幻工作室
CGI實驗區CGI下載Java Applet、.Java Script網站計數器
 
溪水湖泊網路工作室 
決大多數人都是用 WIN95或NT的作業系統, 而這個站提供的原始碼皆在 WIN95及NT 上測試過, 包括了留言版,登錄網站,討論區,聊天室等等, 各位 可配合 website 及 perl 直譯器來學習
Matt's Script Archive 在那裡可得到很多網頁 CGI 的程式檔,設計網頁者一定要去看看..........
LIST SITE PRO Version 1.0
  此程式主要的功能是對各登錄網站做熱門排行榜,它能記載該網站被其它使用者參觀的次數,及透過該網站連結至本網站的貢獻效益,因怕各網站站徽讀取時間過久,其可設定最多讀取的個數,登錄的資料也可以經由任確認密碼後異動。DEMO
Count It! Version: 1.0 - Released: 05/29/98 - Free - Platform(s): Unix
  A simple text-based counter system that will create as many counters as you want, one for each web page, using only one data file and one script file
many.zip(2k)
  常看到有許多網站,有個小框框媗膆傿菪堳e有幾人在站上。說明
countdown.zip (5.5K)
  指定某個日期,計算看看有多久[ Readme ] [ Download ] [ Demo ] 中文說明

 

最後更新日期:16-07-05 23:35.(香港時間)