用CGIC库函数获取表单中的参数值

CGIC是非常优秀的C语言CGI库函数。 其下载地址为: www.boutell.com/cgic/#obtain ,现在的版本号是2.05。
从 cgic.c的代码可以看出,它定义了main函数,而在cgictest.c中定义了一个cgiMain函数。也就是说,对于使用CGIC编写的CGI 程序,都是从cgic.c中的代码进入,在库函数完成了一系列必要的操作(比如解析参数、获取系统环境变量)之后,它才会调用你的代码(从你定义的 cgiMain进入)。
我们在提交一个表单(form)时,怎样把表单内的值提取出来呢?
比如下面这个表单:
<form action="cgi-bin/out.cgi" method="POST" enctype="multipart/form-data">
    <input type="text" name="name" />
    <input type="text" name="number" />
    <input type="submit" value="Submit" />
</form>

当out.cgi收到请求时,需要把输入框”name”和输入框”number”内的值提取出来。而且不管form中的action是GET还是POST,都要有效。

下面给出示例代码:
下载: test.c

   1. #include <stdio.h>
   2. #include "cgic.h"
   3. #include <string.h>
   4. #include <stdlib.h>
   5. 
   6. int cgiMain() {
   7.     char name[241];
   8.     char number[241];
   9.     cgiHeaderContentType("text/html");
  10.     fprintf(cgiOut, "<HTML><HEAD>\n");
  11.     fprintf(cgiOut, "<TITLE>My CGI</TITLE></HEAD>\n");
  12.     fprintf(cgiOut, "<BODY>");
  13.     cgiFormString("name", name, 241);
  14.     cgiFormString("number", number, 241);
  15.     fprintf(cgiOut, "<H1>%s</H1>",name);
  16.     fprintf(cgiOut, "<H1>%s</H1>",number);
  17.     fprintf(cgiOut, "</BODY>\n");
  18.     fprintf(cgiOut, "</HTML>\n");
  19.     return 0;
  20. }

从上面的代码可以看出,第13行和第14行获取了输入框的值。

可以看到该网页的提交方式是enctype="multipart/form-data",但是在CGIC中已经帮我们做好判断了,
所以不管我们提交网页是什么格式的,都没问题

获取输入参数值在CGIC中其实有一族函数,cgiFormString是其中最常用的一个。
cgiFormStringNoNewlines用来去掉换行符(如果用户是在一个TextArea里输入字符的话);
cgiFormStringSpaceNeeded用于测试输入值的长度,可以以此为依据,然后按需精确分配缓冲区。

你可能感兴趣的:(用CGIC库函数获取表单中的参数值)