CGI小程序實例

用 C/C++ 寫 CGI 程序 
  
用 C/C++ 寫 CGI 程序非常簡單,主要是要清楚什麼是 CGI。 

CGI全稱 Common Gateway Interface (共同編程接口),是一種編程接口,不論什麼語言,只要按照該接口的標準編寫出來的程序,即可叫做 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 <stdio.h> 
main() { 
    printf("Content-type:text/html\n\n"); 
    printf("Hello,World!"); 


//  End 

gcc -o hello hello.c  # 編譯 

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

http://www.server.com/cgi-bin/examples/c/hello 

這將在瀏覽器裏打印出 Hello,World! 

這就算得上是一個 CGI 程序了,是不是很簡單?^_^ 第一句 printf() 是打印頭信息,讓 Web 瀏覽器知道以下打印的數據是什麼類型的數據,本例子中指定了 text/html 類型,即 html 文檔,所以下面的那句 printf() 打印的內容就會像我們寫網頁內容一樣在瀏覽器上顯示出來。 

用 C/C++ 寫 CGI 的最難之處應算從瀏覽器接收數據!不過,藉助現成的源程序,從瀏覽器接收數據也只不過是小菜一碟而已。 

我說的這個現成的源程序是用 FireBird 的 bbs2www 程序包裏提取出來的。在這裏下載:cgi.c - cgi.h 

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

vi test.c # 編輯源文件 

// Begin 

#include <stdio.h> 
#include "cgi.c" 

main() { 
    char *name,*email; 

    cgi_init(); 
    cgi_html_head(); 
    name = cgi_get("name"); 
    email = cgi_get("email"); 

    printf("name = %s",name); 
    printf("<br>"); 
    printf("email = %s",email); 

    cgi_quit(); 


// 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 目錄,接着通過以下方式調用該程序。 

http://www.server.com/cgi-bin/examples/c/test?name=charles&[email protected] 

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

此文轉載自網絡文章!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章