cgi程式可以用c、c++、perl等多種語言編寫。本文以乙個最簡單的表單提交和cgi處理為例,示範了如何使用c語言編寫處理表單的cgi程式,這裡的有本人寫的乙個很小的cgi庫——一些相關的函式。更多關於cgi的背景知識,網上有很多介紹。
表單頁面**如下:
自製的cgi庫cgilib的標頭檔案:
#ifndef _cgilib_h_
#define _cgilib_h_
#include"stdbool.h"
#include#include/*判斷請求方式是否為post*/
bool isposttype();
/*判斷請求方式是否為get*/
bool isgettype();
/**功能:url編碼的解碼
*dest_str 指向原始字串
*aim_str 指向乙個將用於儲存解碼後的資料的字元陣列
*/char *unencode(const char *dest_str, char *aim_str);
/**功能:從url中提取出name對應的value,若查詢不到,則返回null
*url:表單提交的資料,已經過解碼
*name:表單元素的name
*value:表單元素的值
*注意:本函式假定url的字元為嚴格的name1=value1&name2=value2&……的格式,
且在name和value中不出現字元『=』和『&』
*/char *getvalue(const char *url, const char *name, char *value);
#endif /*_cgilib_h_*/
執行的cgidemo.c程式:
#include#include"cgilib.h"
int main()
else if(isgettype())
/*獲取提交的資料,解碼*/
if(getenv("content_length"))
printf("提交的字元數%d\n\n", n);
scanf("%s", &url);
url[n] = '\0';
printf("解碼前的提交資料:%s\n\n", url);
printf("解碼後的提交資料:%s\n\n", unencode(url, data));
/*提取表單元素的資料*/
printf("暱稱:%s\n\n", getvalue(data, "usrname", value));
printf("密碼:%s\n\n", getvalue(data, "usrpassword", value));
fflush(stdout);
return 0;
}
安裝xamp,將上面的網頁(cgites)放到xamp資料夾下的htdocs資料夾下,將cgidemo.c編譯後產生的可執行檔案(cgidemo.exe)放到cgi-bin資料夾下。在瀏覽器輸入:localhost/cgitest.html 。在顯示的網頁中填寫資訊,如下圖:
提交表單,處理結果如下:
C語言寫CGI 程式簡要指南
cgi common gateway inte ce 公用閘道器介面 規定了web伺服器呼叫其他可執行程式 cgi程式 的介面協議標準。web伺服器通過呼叫cgi程式實現和web瀏覽器的互動,也就是cgi程式接受web瀏覽器傳送給web伺服器的資訊,進行處理,將響應結果再回送給web伺服器及web瀏...
C語言CGI上傳檔案
找到的資料 用於向嵌入式linux系統上跑的簡單web服務上傳檔案 說一下原理 把檔案的post表單域安排在post資料流的最後部分,根據 content length的長度和post流的固定的資料格式,計算出上傳的檔案大小,然後從流中邊讀邊寫這個大小的資料存入檔案就可以了,因為表單 的提交直接是無...
C語言進行CGI程式設計
一 cgi概述 cgi 公用閘道器介面 規定了web伺服器呼叫其他可執行程式 cgi程式 的介面協議標準。web伺服器通過呼叫cgi程式實現和web瀏覽器的互動,也就是cgi程式接受web瀏覽器傳送給web伺服器的資訊,進行處理,將響應結果再回送給web伺服器及web瀏覽器。cgi程式一般完成web...