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程序.

posted @ 2011-06-02 11:26  hnrainll  阅读(1210)  评论(0编辑  收藏  举报