用C語言進行CGI程式設計

2021-08-25 07:55:57 字數 2041 閱讀 5006

一、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...