砂拉豆 发表于 2017-1-5 11:53:11

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]
查看完整版本: Apache中使用C语言写的CGI