一、cgi概述
cgi(公用閘道器介面)規定了web伺服器呼叫其他可執行程式(cgi程式)的介面協議標準。web伺服器通過呼叫cgi程式實現和web瀏覽器的互動
, 也就是cgi程式接受web瀏覽器傳送給web伺服器的資訊,進行處理,將響應結果再回送給web伺服器及web瀏覽器。cgi程式一般完成web網頁中表單(form)資料的處理、資料庫查詢和實現與傳統應用系統的整合等工作。cgi程式可以用任何程式語言編寫,如shell指令碼語言、perl、 fortran、pascal、c語言等。但是用c語言編寫的cgi程式具有執行速度快、安全性高(因為c語言程式是編譯執行且不可被修改)等特點。
cgi介面標準包括標準輸入、環境變數、標準輸出三部分。
1.標準輸入
cgi 程式像其他可執行程式一樣,可通過標準輸入(stdin)從web伺服器得到輸入資訊,如form中的資料,這就是所謂的向cgi程式傳遞資料的post 方法。這意味著在作業系統命令列狀態可執行cgi程式,對cgi程式進行除錯。post方法是常用的方法,本文將以此方法為例,分析cgi程式設計的方 法、過程和技巧。
2.環境變數
作業系統提供了許多環境變數,它們定義了程式的執行環境,應用程式可以訪問它們。web伺服器和cgi 介面又另外設定了自己的一些環境變數,用來向cgi程式傳遞一些重要的引數。cgi的get方法還通過 環境變數query-string向cgi程式傳遞form中的資料。
3.標準輸出
cgi程式通過標準輸出(stdout)將輸出資訊傳送給web伺服器。傳送給web伺服器的資訊可以用各種格式,通常是以純文字或者html文字的形式,這樣我們就可以在命令列狀態除錯cgi程式,並且得到它們的輸出。
下面是乙個簡單的cgi程式,它將html中form的資訊直接輸出到web瀏覽器。
#include
#include
int main()
int i ,n;
printf("content-type: text/plain/n/n");
if(getenv("content-length"))
n = atoi(getenv("content-length"));
for(i = 0; i
putchar(getchar());
下面對此程式作一下簡要的分析。printf("content-type: text/plain/n/n");此行通過標準輸出將字串″content-type: text/plain/n/n″傳送給web伺服器。它是乙個mime頭資訊,它告訴web伺服器隨後的輸出是以純ascii文字的形式。請注意在這個頭資訊中有兩個新行符,這是因為 web伺服器需要在實際的文字資訊開始之前先看見乙個空行。
if (getenv(″content-length″))
n=atoi (getenv(″content-length″));
此行首先檢查環境變數content-length是否存在。web伺服器在呼叫使用post方法的cgi程式時設定此環境變數,它的文字值表示 web伺服器傳送給cgi程式的輸入中的字元數目,因此我們使用函式atoi() 將此環境變數的值轉換成整數,並賦給變數n.請注意web伺服器並不以檔案結束符來終止它的輸出,所以如果不檢查環境變數content- length,cgi程式就無法知道什麼時候輸入結束了
for (i=0;iputchar(getchar());
此行從0迴圈到(content-length-1)次將標準輸入中讀到的每乙個字元直接拷貝到標準輸出,也就是將所有的輸入以ascii的形式回送給web伺服器。
通過此例,我們可將cgi程式的一般工作過程總結為如下幾點。
1.通過檢查環境變數content-length,確定有多少輸入;
2.迴圈使用getchar()或者其他檔案讀函式得到所有的輸入;
3.以相應的方法處理輸入;
4.通過″content-type:″頭資訊,將輸出資訊的格式告訴web伺服器;
5.通過使用printf()或者putchar()或者其他的檔案寫函式,將輸出傳送給web伺服器。
總之,cgi程式的主要任務就是從web伺服器得到輸入資訊,進行處理,然後將輸出結果再送回給web伺服器。
用C語言進行CGI程式設計
用c語言進行cgi程式設計 一 cgi概述 cgi 公用閘道器介面 規定了web伺服器呼叫其他可執行程式 cgi程 序 的介面協議標準。web伺服器通過呼叫cgi程式實現和web瀏覽器的互動,也就是cgi程式接受web瀏覽器傳送給web伺服器的資訊,進行處理,將響應結果再回送給web伺服器及web瀏...
C語言進行CGI程式設計
一 cgi概述 cgi 公用閘道器介面 規定了web伺服器呼叫其他可執行程式 cgi程式 的介面協議標準。web伺服器通過呼叫cgi程式實現和web瀏覽器的互動,也就是cgi程式接受web瀏覽器傳送給web伺服器的資訊,進行處理,將響應結果再回送給web伺服器及web瀏覽器。cgi程式一般完成web...
C 進行CGI的WEB程式設計
公共閘道器介面 cgi 是一套標準,定義了資訊是如何在 web 伺服器和客戶端指令碼之間進行交換的。cgi 規範目前是由 ncsa 維護的,ncsa 定義 cgi 為 公共閘道器介面 cgi 是一種用於外部閘道器程式與資訊伺服器 如 http 伺服器 對接的介面標準。目前的版本是 cgi 1.1,c...