现象:
在表单中输入两个数据.调用CGI返回两个数据相加的和.
下面我们看一下:htm部分代码
< html > < head > < title > CGI:Test add </ title > </ head > < body > < form action ="/cgi-bin/demo2.cgi" > < p > < h1 > 请输入两个数据: < input type ="text" name ="m" size ="5" > + < input type ="text" name ="n" size ="5" > < br > < input type ="submit" value ="确定" > </ h1 > </ p > </ form > < body > </ html >
要点:
<input type="text" name="m" size="5">
这里是设定input类型为文本域,变量名为m, size=5表示文本域的显示宽度为5,太长就不美观了.
界面如下:
CGI程序:
#include < stdio.h > #include < stdlib.h > int main( void ){ char * data; int a = 0 , b = 0 ; data = getenv( " QUERY_STRING " ); printf( " %s\r\n\r\n " , " Content-Type:text/html " ); printf( " <html>\n<TITLE>CGI2:相加结果</TITLE><br>\n " ); sscanf(data, " m=%d&n=%d " , & a, & b); printf( " <H1>相加结果为:%d</H1> " ,a + b); return 0 ;}
要点:
1.data = getenv("QUERY_STRING");
通过getenv函数获得环境变量的指针.
2.sscanf(data, "m=%d&n=%d",&a,&b);
格式化字符串输入.
下面,看一下我们点击"确定"按钮后,浏览器的地址发生了什么变化.
http://192.168.220.199/cgi-bin/demoadd.cgi?m=4&n=5
这里的m=4&n=5和sscanf中形式是一样的.他就是QUERY_STRING环境变量中的值.
所以,我们在html代码中的,m,n的位置不能弄反,否则不会出现现象.
注意:
1.CGI和HTML沟通是通过环境变量来实现的.所以只要能获得环境变量的语言都可以用来写CGI程序.