日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言编制编程语言,C语言CGI编程入门(一)

發(fā)布時(shí)間:2024/4/14 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言编制编程语言,C语言CGI编程入门(一) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

CGI是指web服務(wù)器調(diào)用編程語言編寫的流程的一個(gè)接口。比如我們可以編寫一個(gè)用戶注冊(cè)的界面,用戶將其輸入的郵件、用戶名、密鑰輸入并點(diǎn)擊注冊(cè),此時(shí)瀏覽器就將用戶輸入的內(nèi)容發(fā)送給了我們后臺(tái)的CGI程序,我們的CGI程序接受到其他資料,可以對(duì)其進(jìn)行處理。比如送入、分析輸入的資料是否非法等。

主流的CGI程序用Perl編寫,Perl是一款超強(qiáng)的插件語言,但是我這兒不太懂,我也不去比較某兩個(gè)語言間的好壞。我說一下用C和C++如何編寫CGI程序,告訴你們用C語言也能編寫web應(yīng)用程序,用C語言也能寫一個(gè)網(wǎng)站。

1.準(zhǔn)備工作

首先要先安裝一款web服務(wù)器。我就用windows功能下的Apache,其實(shí)Linux下大同小異,應(yīng)該需要增設(shè)的東西多一些。

你們可以在apache網(wǎng)站下載最新版的Apache for Windows,月亮也是下載:。安裝后打開安裝目錄,大致就是這樣一些文檔:

看到那種“cgi-bin”了嗎,這是默認(rèn)的cgi程序目錄。當(dāng)然,我們也可以手動(dòng)設(shè)置其位置:用記事本打開conf/httpd.conf,這是Apache的頂配文檔。找到類似上面這一行

ScriptAlias /cgi-bin/ "d:/Program Files (x86)/Apache Software Foundation/Apache2.2/cgi-bin/"

"/cgi-bin/"指出web地址,譬如默認(rèn)是,即訪問cgi的根目錄。"d:/Program Files (x86)/Apache Software Foundation/Apache2.2/cgi-bin/"指出對(duì)應(yīng)的絕對(duì)路徑。這也是不難理解,我們?yōu)g覽器訪問就是代表訪問了服務(wù)器上的相應(yīng)的絕對(duì)路徑。所以修改這個(gè)絕對(duì)路徑,就可以指定我們的CGI程序存放的根目錄。

我這兒就不改了,一會(huì)我們寫好的CGI程序直接放到這個(gè)cgi-bin文件夾下,再通過訪問即可。

2.直到寫程序

用VS2010新建一個(gè)控制臺(tái)應(yīng)用程序工程,我的叫做cgi_test。在main函數(shù)里寫

printf("Content-type:text/html\n\n");

printf("hello world!!");

其實(shí)也可以用C++的cout來替代printf輸出。先別急著編譯,我們先在工期上點(diǎn)光標(biāo),選擇特性:

在頂配設(shè)置-常規(guī)中,更改輸出目錄為cgi-bin下。我就改成cgi-bin\test\,這種我們生成的可執(zhí)行文檔都會(huì)被放置這兒。目標(biāo)文件的擴(kuò)展名我也順便從exe改成cgi,所以不改,迅雷等下載可能會(huì)讓你下載而不是讓瀏覽器解析它。

再就可以編譯了。F7編譯后,我們回到cgi-bin/test/中,就可以看見我們編譯生成好的"cgi_test.cgi"文件。

打開瀏覽器,輸入,就可以看見hello world了:

這就是我們的第一個(gè)cgi程序。

3.如何寫一個(gè)CGI程序

剛才寫程序的工作是我來完成的c語言入門,但是那兩個(gè)語句很簡(jiǎn)單,但有的同學(xué)會(huì)問為什么要怎么寫。

我簡(jiǎn)單解釋一下,第一個(gè)printf輸出的"Content-type:text/html\n\n"是一個(gè)文件的標(biāo)識(shí),告訴瀏覽器以html的句子來解析此文檔,而不是去下載它(切記末尾需要兩個(gè)換行,即一個(gè)空行,這是標(biāo)準(zhǔn))。只要我們需要輸出內(nèi)容到瀏覽器,都得加這一句話在最前面,忘記就好。

中間的printf就是輸出到瀏覽器上的資料,提醒需要用html的句子才能正常顯示在瀏覽器上。比如換行,需要用
,而不是\n了。不懂的去學(xué)習(xí)關(guān)于html的常識(shí)(因?yàn)椴粚W(xué)習(xí)html就別想做一個(gè)網(wǎng)站或web程序)。

如果,只要借助printf,就可以將任何html源碼輸出在瀏覽器里。而且,因?yàn)槭怯肅/C++寫的流程,但是C/C++下的所有函數(shù),都可以用在CGI程序里。(也包含windowsAPI)

比如,用戶提交好了注冊(cè)列表,將資料傳遞給我的CGI程序,我就可以讀取ODBC的變量c語言入門,打通,將資料寫入。也可以通過if判斷句,來檢查用戶能否輸入了合法資料。

不過有學(xué)生又要問了,用戶提交的資料如何就傳給我們的CGI程序了呢?程序又是什么接受這種數(shù)據(jù)?

4.接受GET或POST來的資料

因?yàn)椴恢繥ET和POST的含義,我建議你還是去看一下PHP。我這兒只簡(jiǎn)單地提一下,我們新建一個(gè)html頁面,在其中添加一個(gè)表單,其中有一個(gè)文本框和一個(gè)按鈕,大致代碼如下:

輸入內(nèi)容:

你們可以看見,form有個(gè)特性method,認(rèn)為你用多少方法報(bào)送(post或get),action屬性指出出具的地址。get方法報(bào)送,含義就是把提交的內(nèi)容放到地址前面,用?隔開。post提交就是把數(shù)據(jù)放到數(shù)據(jù)包里發(fā)送給目標(biāo)地址。我們?cè)谖谋究騼?nèi)填入信息,點(diǎn)擊頁面提交,我們填入的資料都會(huì)以對(duì)應(yīng)方法發(fā)送到目標(biāo)地址。

C程序接受POST過來的資料比較簡(jiǎn)單。因?yàn)閜ost來的資料都在輸入流里,直接scanf或cin>>就能調(diào)用了。

GET來的資料在地址欄里,我們需要用到一個(gè)C庫中的變量:getenv,它的效果是獲取環(huán)境變量,其中包含獲取GET來的資料。(獲取?后的一切內(nèi)容:getenv("QUERY_STRING"))

關(guān)于這個(gè)變量的一切用法我放到附件里,下載可查。

5.做個(gè)示范

int _tmain(int argc, _TCHAR* argv[])

{

printf("Content-type:text/html\n\n");

printf("%s",getenv("QUERY_STRING")); //打印get獲取的信息

char szPost[256];

gets(szPost);

if(strcmp(szPost,))

printf("%s",szPost); //打印post獲取的信息

return 0;

}

用我們剛才的html代碼來填寫:

填入內(nèi)容:

post方法獲取的資料,提醒地址欄:

get方法獲取的資料,提醒地址欄:

至于get方法獲取的資料打印出來前面為什么有亂碼,因?yàn)槲翼槺惆褯]有信息的szPost也打印了。實(shí)際使用的時(shí)候也是先分析szPost中能否有資料再打印。

今天寫的夠多了。大致C/C++處理CGI就是這樣子,你可以發(fā)揮自己的想像,寫成一些具備使用價(jià)值的流程。我們下次給你們講一個(gè)庫,通過這個(gè)庫,可以很輕松的使用cgi編寫web應(yīng)用程序。

本文來自電腦雜談,轉(zhuǎn)載請(qǐng)注明本文網(wǎng)址:

http://www.pc-fly.com/a/jisuanjixue/article-118963-1.html

總結(jié)

以上是生活随笔為你收集整理的c语言编制编程语言,C语言CGI编程入门(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。