CGI小程式例項

2021-06-19 11:54:54 字數 1870 閱讀 3387

用 c/c++ 寫 cgi 程式 

用 c/c++ 寫 cgi 程式非常簡單,主要是要清楚什麼是 cgi。 

cgi全稱 common gateway inte***ce (共同程式設計介面),是一種程式設計介面,不論什麼語言,只要按照該介面的標準編寫出來的程式,即可叫做 cgi 程式。cgi 程式的輸入/輸出是使用程式語言的標準輸入/標準輸出,所以用 c/c++ 來寫 cgi 程式就好象寫普通程式一樣,不過還有幾樣東西要注意的。 

1、cgi 程式的通訊方式 

當有資料從瀏覽器傳到 web 伺服器後,該伺服器會根據傳送的型別(基本有二類:get/post),將這些接收到的資料傳入 query_string 或 變數中,cgi 程式可以通過標準輸入,在程式中接收這些資料。當要向瀏覽器傳送資訊時,只要向 web 伺服器傳送特定的檔案頭資訊,即可通過標準輸出將資訊發往 web 伺服器,web 伺服器處理完這些由 cgi 程式發來的資訊後就會將這些資訊傳送給瀏覽器。這樣就是 cgi 程式的通訊方式了。 

2、接收資料 

用 get 方式接收到的資料儲存在 web 伺服器的 query_string 變數裡,而通過 post 方式接收到的資料是儲存在 這個 web 伺服器變數裡。它們的唯一區別就是:以 get 方式接收的資料是有長度限制,而用 post 方式接收的資料是沒有長度限制的。並且,以 get 方式傳送資料,可以通過 url 的形式來傳送,但 post方式傳送的資料必須要通過 form 才到傳送。 

好,現在讓我們用 c 語言寫乙個神聖的 cgi 程式 -- hello,world! 

vi hello.c  # 編輯原始檔 

//  begin 

#include 

main()  

//  end 

gcc -o hello hello.c  # 編譯 

將該程式放在 web 伺服器的 cgi-bin 目錄下,然後通過以下方式訪問: 

這將在瀏覽器裡列印出 hello,world! 

這就算得上是乙個 cgi 程式了,是不是很簡單?^_^ 第一句 printf() 是列印頭資訊,讓 web 瀏覽器知道以下列印的資料是什麼型別的資料,本例子中指定了 text/html 型別,即 html 文件,所以下面的那句 printf() 列印的內容就會像我們寫網頁內容一樣在瀏覽器上顯示出來。 

用 c/c++ 寫 cgi 的最難之處應算從瀏覽器接收資料!不過,借助現成的源程式,從瀏覽器接收資料也只不過是小菜一碟而已。 

cgi.c

- cgi.h

經本人提取出來的源程式只有兩個檔案 cgi.c 和 cgi.h。當要用它們來寫 cgi 程式時,只需在程式中加入 #include "cgi.c" 即可,現以例子說明一下使用方法。假設要通過 get 方式從瀏覽器接收使用者的名字和 e-mail 位址,源程式如下: 

vi test.c # 編輯原始檔 

// begin 

#include 

#include "cgi.c" 

main()  

// end 

首先定義兩個指標,然後呼叫 cgi_init() 來初始化 cgi 環境, cgi_html_head() 列印 html 檔案型別資訊,和 printf("content-type:text/html\n\n"); 基本一樣,不過用 cgi_html_head() 列印的頭資訊會指定檔案的字元編碼為 gb2312 即中文字元。呼叫 cgi_get() 方法取得指定關鍵字( name 和 email )的值。當完成 cgi 部分的**後,要通用呼叫 cgi_quit() 和釋放 cgi 所點的系統資源。最後就像以住一樣去編譯程式,gcc -o6 -o test test.c 然後將該程式放到 cgi-bin 目錄,接著通過以下方式呼叫該程式。 

好了,一切就是這樣簡單!要開發更好的 cgi 程式就要靠您的 c/c++ 的功力了。歡迎指教! 

cgi測試程式

使用cgic庫的簡要 庫的函式說明 1.列印cgi標準輸出頭部 cgiheadercontenttype text plain 或者 fprintf stdout,content type text plain n n 紅色部分不能寫出 contenttype 否則瀏覽器顯示網頁會不正常。2.處理r...

如何編寫CGI程式

cgi的工作原理介紹 cgi mon gateway inte ce 是乙個web伺服器提供資訊服務的標準介面,通過這樣乙個介面,web伺服器能夠執行程式,並將程式輸出的資訊返回給瀏覽器。因為在web網上的資料都是靜態的,通過cgi程式能夠動態的處理瀏覽者的請求,如儲存使用者輸入的資訊,根據使用者資...

小程式呼叫介面例項

wx.request method post header complete function res if res null res.data null success function res 在這裡對js進行簡單的解釋,wcss和wxml 就不奉上了!url 這個是要請求的介面位址 data ...