Apache中使用C语言写的CGI
今天找了不少资料,终于解决了Windows下Apache调用C语言写的CGI的问题,现整理如下首先在Apache的配置文件httpd.conf中找到“AddHandler cgi-script .cgi”去掉前面的#号再改为:
“AddHandler cgi-script .cgi .exe”之后重启Apache。
下面给个例子
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;
}
关键是在输出的printf("%s%c%c","<meta Content-Type:text/html;charset=UTF-8 />",13,10);前面再给一空行。
否则的话会出现如下提示“The server encountered an internal error or misconfiguration and was unable to complete your request.”
接着将编译过的*.exe文件改名为mult.cgi(其实不改名为*.cgi也可以使用)并放在Apache的cgi-bin目录下。
调用mult.cgi的html源代码如下:
<FORM ACTION="/cgi-bin/mult.cgi">
<P>请在下面填入乘数和被乘数,按下确定后可以看到结果。
<INPUT NAME="m" SIZE="5">
<INPUT NAME="n" SIZE="5"><BR>
<INPUT TYPE="SUBMIT" VALUE="确定">
</FORM>
存为cgi.html放在网站根目录下,之后在浏览器中输入localhost/cgi.html即可得到运行结果。
我的话费充值店-各种面额
电信100元仅售98.60
联通100仅售99.00
移动100仅售99.30
页:
[1]