用C语言写CGI

时间:2022-05-03 06:48:03
嵌入式的web程序,需要用cgi来处理后台,另考虑到可移植性,C为首选语言(虽然Perl语言是编写cgi程序的主流选择)因为手头暂时还没嵌入式设备,为了开发的方便,一般都是在windows平台下做开发,然后移植到嵌入式平台上,这里就把我在windows下搭建运行成功第一个cgi的例子记录如下:
【开发环境及使用工具】
操作系统: windows 7
C语言开发工具: Dev-C++
web服务器: Apache HTTP Server 2.2
第一步:开启Apache的cgi支持
在 Apache2.2\conf\httpd.conf 文件中,找到  # AddHandler cgi-script .cgi 去掉注释,并添加一个.exe的后缀,修改后如下:
AddHandler cgi-script .cgi .exe 
保存,重启web服务器。
第二步:编写cgi程序(其实就是一个C语言写的exe文件)
使用Dev-C++工具开发,C程序如下(文件名为aaa.c):
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
 char *data;
 long m,n;
 printf("%c%c",13,10);
 printf("%s%c%c","<meta Content-Type:text/html;charset=UTF-8 />",13,10);
 printf("<TITLE>乘法结果</TITLE> ");
 printf("<H3>乘法结果</H3> ");
 data = getenv("QUERY_STRING");
 if(data == NULL)
 printf("<P>错误!数据没有被输入或者数据传输有问题");
 else if(sscanf(data,"m=%ld&n=%ld",&m,&n)!=2)
 printf("<P>错误!输入数据非法。表单中输入的必须是数字。");
 else
 printf("<P>%ld和%ld的成绩是:%ld。",m,n,m*n);
 fflush(stdout);
 return 0;
}
编译后得到 aaa.exe,接着将文件改名为aaa.cgi(其实不改名为*.cgi也可以使用)并放在Apache2.2\cgi-bin目录下。
第三步:编写客户端调用程序
编写一个html文件来调用aaa.cgi , html文件(名为test.html)源码如下:
<FORM ACTION="/cgi-bin/mult.cgi">
<P>请在下面填入乘数和被乘数,按下确定后可以看到结果。
<INPUT NAME="m" SIZE="5">
<INPUT NAME="n" SIZE="5"><BR>
<INPUT TYPE="SUBMIT" VALUE="确定">
</FORM>
将test.html放在网站的根目录下(\Apache2.2\htdocs),之后在浏览器中输入http://127.0.0.1/test.html来测试。
结果运行正常!