CGI编程学习3 加法计算
现象:
在表单中输入两个数据.调用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程序.
欢迎访问:wenhao.ink