HTML与cgi post传递与接收,CGI实例--表单GET与POST示例
CGI概述
CGI(Common Gateway Interface: 公用網(wǎng)關(guān)接口)規(guī)定了Web服務(wù)器調(diào)用其他可執(zhí)行程序(CGI程 序)的接口協(xié)議標(biāo)準(zhǔn)。Web服務(wù)器通過(guò)調(diào)用CGI程序?qū)崿F(xiàn)和Web瀏覽器的交互, 也就是CGI程序通過(guò)讀標(biāo)準(zhǔn)輸入,接受Web瀏覽器發(fā)送給Web服務(wù)器的信息, 進(jìn)行處理, 將響應(yīng)結(jié)果再通過(guò)標(biāo)準(zhǔn)輸出回送給Web服務(wù)器, 然后經(jīng)過(guò)http協(xié)議返回給Web瀏覽器。
CGI程序一般完成Web網(wǎng)頁(yè)中表單(Form)數(shù)據(jù)的處理、數(shù)據(jù)庫(kù)查詢和實(shí)現(xiàn)與傳統(tǒng)應(yīng)用系統(tǒng)的集成等工作。CGI程序可以用任何程序設(shè)計(jì)語(yǔ)言編寫,如Shell腳本語(yǔ)言、Perl、Fortran、Pascal、C語(yǔ)言等。但是用C語(yǔ)言編寫的CGI程序具有執(zhí)行速度快、安全性高(因?yàn)镃語(yǔ)言程序是編譯執(zhí)行且不可被修改)等特點(diǎn)。
CGI接口標(biāo)準(zhǔn)包括標(biāo)準(zhǔn)輸入、環(huán)境變量、標(biāo)準(zhǔn)輸出三部分。
HTML表單(Form)是HTML的一個(gè)重要部分,主要用于采集和提交用戶輸入的信息。
舉個(gè)簡(jiǎn)單的例子,一個(gè)讓用戶輸入姓名的HTML表單(Form)。示例代碼如下:
action="*.cgi" method="get">
Please input your
name:
type="text" name="yourname">
type="submit" value="login">
學(xué)習(xí)HTML表單(Form)最關(guān)鍵要掌握的有三個(gè)要點(diǎn):
表單控件(Form Controls)
Action
Method
先說(shuō)表單控件(Form Controls),通過(guò)HTML表單的各種控件,用戶可以輸入文字信息,或者從選項(xiàng)中選擇,以及做提交的操作。比如上面的例句里,input type= "text"就是一個(gè)表單控件,表示一個(gè)單行輸入框。
用戶填入表單的信息總是需要程序來(lái)進(jìn)行處理,表單里的action就指明了處理表單信息的文件。比如上面例句里的*.CGI。
至于method,表示了發(fā)送表單信息的方式。method有兩個(gè)值:get和post。get的方式是將表單控件的name/value信息經(jīng)過(guò)編碼之后,通過(guò)URL發(fā)送(你可以在地址欄里看到)。而post則將表單的內(nèi)容通過(guò)http發(fā)送,你在地址欄看不到表單的提交信息。那什么時(shí)候用get,什么時(shí)候用post呢?一般是這樣來(lái)判斷的,如果只是為取得和顯示數(shù)據(jù),用get;一旦涉及數(shù)據(jù)的保存和更新,那么建議用post。
GET方法:做一個(gè)加法運(yùn)算,需要接收兩個(gè)參數(shù)
文件get.c如下:
#include
#include
int main(void)
{
char *data;
char a[10],b[10];
printf("Content-Type:text/html\n\n");
printf("\n");
printf("
\nGet Method\n\n");printf("
\n");printf("
\n");data = getenv("QUERY_STRING");
if(sscanf(data,"a=%[^&]&b=%s",a,b)!=2){
printf("
Error parameters should be entered!\n");}
else{
printf("
a + b = %d\n",atoi(a)+atoi(b));}
printf("
");
printf("");
printf("
\n");printf("\n");
printf("\n");
return 0;
}
POST方法:做一個(gè)乘法運(yùn)算,需要接收兩個(gè)參數(shù)
文件post.c如下:
#include
#include
int main(void){
int len;
char *lenstr,poststr[20];
char m[10],n[10];
printf("Content-Type:text/html\n\n");
printf("\n");
printf("
\npost Method\n\n");printf("
\n");printf("
\n");lenstr=getenv("CONTENT_LENGTH");
if(lenstr == NULL)
printf("
Error parameters should be entered!\n");else{
len=atoi(lenstr);
fgets(poststr,len+1,stdin);
if(sscanf(poststr,"m=%[^&]&n=%s",m,n)!=2){
printf("
Error: Parameters are not right!\n");}
else{
printf("
m * n = %d\n",atoi(m)*atoi(n));}
}
printf("
");
printf("");
printf("
\n");printf("\n");
printf("\n");
fflush(stdout);
return 0;
}
再附上html測(cè)試文件cgi.html:
CGI Testing| Method: GETplease input two number: + = |
| Method: POSTplease input two number: * = |
總結(jié)
以上是生活随笔為你收集整理的HTML与cgi post传递与接收,CGI实例--表单GET与POST示例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mysql超过1W条查询不显示_mysq
- 下一篇: php excel 垂直居中,完美实现文