HTML与cgi post传递与接收,CGI实例--表单GET与POST示例
CGI概述
CGI(Common Gateway Interface: 公用網關接口)規定了Web服務器調用其他可執行程序(CGI程 序)的接口協議標準。Web服務器通過調用CGI程序實現和Web瀏覽器的交互, 也就是CGI程序通過讀標準輸入,接受Web瀏覽器發送給Web服務器的信息, 進行處理, 將響應結果再通過標準輸出回送給Web服務器, 然后經過http協議返回給Web瀏覽器。
CGI程序一般完成Web網頁中表單(Form)數據的處理、數據庫查詢和實現與傳統應用系統的集成等工作。CGI程序可以用任何程序設計語言編寫,如Shell腳本語言、Perl、Fortran、Pascal、C語言等。但是用C語言編寫的CGI程序具有執行速度快、安全性高(因為C語言程序是編譯執行且不可被修改)等特點。
CGI接口標準包括標準輸入、環境變量、標準輸出三部分。
HTML表單(Form)是HTML的一個重要部分,主要用于采集和提交用戶輸入的信息。
舉個簡單的例子,一個讓用戶輸入姓名的HTML表單(Form)。示例代碼如下:
action="*.cgi" method="get">
Please input your
name:
type="text" name="yourname">
type="submit" value="login">
學習HTML表單(Form)最關鍵要掌握的有三個要點:
表單控件(Form Controls)
Action
Method
先說表單控件(Form Controls),通過HTML表單的各種控件,用戶可以輸入文字信息,或者從選項中選擇,以及做提交的操作。比如上面的例句里,input type= "text"就是一個表單控件,表示一個單行輸入框。
用戶填入表單的信息總是需要程序來進行處理,表單里的action就指明了處理表單信息的文件。比如上面例句里的*.CGI。
至于method,表示了發送表單信息的方式。method有兩個值:get和post。get的方式是將表單控件的name/value信息經過編碼之后,通過URL發送(你可以在地址欄里看到)。而post則將表單的內容通過http發送,你在地址欄看不到表單的提交信息。那什么時候用get,什么時候用post呢?一般是這樣來判斷的,如果只是為取得和顯示數據,用get;一旦涉及數據的保存和更新,那么建議用post。
GET方法:做一個加法運算,需要接收兩個參數
文件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方法:做一個乘法運算,需要接收兩個參數
文件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測試文件cgi.html:
CGI Testing| Method: GETplease input two number: + = |
| Method: POSTplease input two number: * = |
總結
以上是生活随笔為你收集整理的HTML与cgi post传递与接收,CGI实例--表单GET与POST示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql超过1W条查询不显示_mysq
- 下一篇: java正则表达式匹配xml标签_用正则