日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

CGI简介

發(fā)布時(shí)間:2023/12/2 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CGI简介 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

始的HTML語(yǔ)言是設(shè)計(jì)用來展現(xiàn)靜態(tài)的資料,它讓人使用一種簡(jiǎn)單的語(yǔ)法展現(xiàn)出豐富的多媒體資料,就像廣告看板一樣。 由於WWW具有相當(dāng)大的商業(yè)用途,因此推出後大受歡迎。可是單純的靜態(tài)展示好像缺少了什麼? 如果使用者需要的資料具有時(shí)效性,必需時(shí)常更新,這時(shí)該怎麼辦呢? 又或者你想留下使用者的資料,讓你的網(wǎng)頁(yè)能跟使用者達(dá)到互動(dòng)的效果,這時(shí)又該如何? 由於上述種種需求,於是就誕生了CGI這東東。?

CGI是Common Gateway Interface的縮寫,中文翻做『共通閘道介面』。它是一種標(biāo)準(zhǔn)介面程式,能讓你的網(wǎng)頁(yè)跟WWW server溝通,達(dá)到跟使用者互動(dòng)的效果。 而且透過CGI程式,可以讓你動(dòng)態(tài)的產(chǎn)生網(wǎng)頁(yè),秀出server上的最新資料。當(dāng)你link到一個(gè)CGI物件時(shí),你取回的文件並非是一份靜態(tài)資料, 而是一個(gè)藉由程式動(dòng)態(tài)產(chǎn)生的HTML資料流。傳回來的資料也許分分秒秒都在更改,或者針對(duì)使用者的特殊查詢而有不同的反應(yīng),例如股票市場(chǎng)行情等等。 簡(jiǎn)單來說,CGI程式就是能夠動(dòng)態(tài)產(chǎn)生WWW網(wǎng)頁(yè),並讓一般使用者經(jīng)由WWW取用現(xiàn)存在傳統(tǒng)資訊系統(tǒng)內(nèi)的資料。?


先,你得認(rèn)清一個(gè)事實(shí):如果資料是天天更新,你絕對(duì)不可能寫一個(gè)很大的HTML文件包含所有的這些更新資料。 萬一放在WWW上的資料是分分秒秒都在變動(dòng)的,那麼利用程式自動(dòng)根據(jù)資料產(chǎn)生HTML文件顯然是你唯一的選擇。 第二,CGI程式可以根據(jù)使用者輸入的要求自動(dòng)產(chǎn)生HTML格式的資料。因?yàn)檩斎胭Y料是由WWW server負(fù)責(zé)接收,並非CGI程式本身, 故得找出一個(gè)有效率的方法,來做使用者輸入?yún)?shù)和產(chǎn)生HTML文件程式間的溝通工作。 CGI本身制訂的標(biāo)準(zhǔn)有提到可以藉由環(huán)境變數(shù)來達(dá)成這個(gè)目的,而且CGI程式也有能力取得現(xiàn)存在各類資料庫(kù)裡的資料。 這就是為什麼我們稱之為Common Gateway Interface,因?yàn)镃GI程式通常就像橋樑或閘道一般,溝通著非WWW系統(tǒng)和WWW server (這和下面所說的Web server、HTTP server是一樣的,都是指一個(gè)架有HTTPd的伺服器)。

個(gè)例子來說,你是某家證券公司的大老闆,你的公司裡已經(jīng)有一個(gè)相當(dāng)完善的資料庫(kù),裝滿了過去所有的股票價(jià)格資料, 現(xiàn)在你想經(jīng)由WWW提供這些資料給你的顧客們做參考,但是你的資料庫(kù)系統(tǒng)根本就不懂HTTP這種格式,這時(shí)你就需要一個(gè)閘道程式, 當(dāng)作股票價(jià)格資料庫(kù)和HTTP server間的橋樑通道,於是CGI程式就誕生了。它可以取得HTTP使用者送來的查詢指令,轉(zhuǎn)換成現(xiàn)存資料庫(kù)可以了解的指令, 用以取得資料後,再將資料轉(zhuǎn)換為HTML格式,最後再經(jīng)由HTTP server傳回給使用者,秀在使用者的瀏覽器上。

據(jù)上述這些要求,CGI程式的確可以用任何程式語(yǔ)言來撰寫,只要該語(yǔ)言具有讀寫檔案的能力且該資料檔可被存取即可。 不過這也表示寫程式時(shí)需要注意安全性的問題,以免資料被使用者有意無意的破壞,否則到時(shí)候就真的欲哭無淚了。?

下來我要說一些比較理論性的東西,但卻是寫CGI程式必備的基本知識(shí)。一部Web server上一定會(huì)跑起HTTPd,這是HTTP的server程式(daemon)。 由於HTTPd牽涉到系統(tǒng)設(shè)定問題,所以除非你是系統(tǒng)管理者或是自己架一臺(tái)server跑起HTTPd,否則一般使用者是沒有權(quán)跑自己寫的CGI程式的。 不過現(xiàn)在另外有個(gè)程式叫CGI wrap,它可以透過一種特殊的方法讀取userhome/www/cgi-bin裡的CGI程式,並且以使用者的身份來執(zhí)行這個(gè)CGI程式,所以不虞有被破站的危險(xiǎn)。 ind.ntou.edu.tw這部Email and Web server就有裝上CGIwrap,並且全校師生都有帳號(hào),是大家練習(xí)CGI程式的好去處(相關(guān)的使用方法請(qǐng)Email to root@ind.ntou.edu.tw)。

OK! 現(xiàn)在我們假設(shè)你的Web server已經(jīng)設(shè)置好執(zhí)行CGI的環(huán)境,並且你有存取cgi-bin目錄的權(quán)限 (至於HTTPd和TCPwrap的安裝與相關(guān)設(shè)定並不在本篇文章的討論範(fàn)圍內(nèi),有興趣者請(qǐng)自行到各大bbs站相關(guān)佈告欄的精華區(qū)找找,一定可以找到你所需要的答案)。 當(dāng)使用者用瀏覽器link到一個(gè)CGI程式時(shí),瀏覽器會(huì)透過HTTP這個(gè)通訊協(xié)定,送出一個(gè)請(qǐng)求(require)給遠(yuǎn)端(remote)的Web server,Web server就會(huì)跑一個(gè)HTTPd process, 這個(gè)process會(huì)去找指定的目錄下有沒有這個(gè)CGI程式,如果有的話HTTPd會(huì)啟動(dòng)一個(gè)child process來跑這個(gè)CGI程式,也因此繼承了HTTPd所有的環(huán)境變數(shù)設(shè)定。 這也就是說使用者所輸入的要求會(huì)經(jīng)由HTTP通訊協(xié)定傳送到Web server的HTTPd,再經(jīng)由環(huán)境變數(shù)或標(biāo)準(zhǔn)輸入裝置(STDIN)傳遞給CGI程式。CGI程式相關(guān)的環(huán)境變數(shù)列表於下:?

Environment VariableDescription
SERVER_SOFTWAREThe type of Web server running the CGI program
SERVER_NAMEThe name of the Web server host
SERVER_PORTThe port address of the Web server
GATEWAY_INTERFACThe version number of the CGI standard
SERVER_PROTOCOLThe version of HTTP the server is running
REQUEST_METHODThe method of requesting data specified by the client
QUERY_STRINGRequest parameters supplied by the client
SCRIPT_NAMEThe resource locator of the CGI program
REMOTE_HOSTThe name of the client host
REMOTE_ADDRThe Ipaddress if the client host
AUTH_TYPEAuthorization method,often blank
REMOTE_USERThe name of the user provided by the client
REMOTE_IDENTAn identify fot the client user,not often available
REFERER_URLHow the client got here
HTTP_ACCEPTThe MIME types accepted by the client
HTTP_USER_AGENTThe client browser type
CONTENT_TYPEThe MIME type of data supplied with the request

CGI程式接收到使用者的需求,經(jīng)過一番處理,然後會(huì)將標(biāo)準(zhǔn)輸出(執(zhí)行結(jié)果)傳送給HTTPd,再經(jīng)由HTTP交給客戶端(client)的瀏覽器秀出來。 所以CGI程式在標(biāo)準(zhǔn)輸出上的執(zhí)行結(jié)果必須要符合HTML格式,而在文件的排版方面當(dāng)然也要依HTML格式來寫,這一點(diǎn)要特別注意一下。?

總結(jié)

以上是生活随笔為你收集整理的CGI简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。