CGIC简明教程4:获取请求中的参数值
我们在提交一个表单(form)时,怎样把表单内的值提取出来呢?
比如下面这个表单:
<
form
action
=
"
cgi-bin/out.cgi
"
method
=
"
POST
"
>
< input type = " text " name = " name " />
< input type = " text " name = " number " />
< input type = " submit " value = " Submit " />
</ form >
< 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
- #include <stdio.h>
- #include "cgic.h"
- #include <string.h>
- #include <stdlib.h>
- int cgiMain() {
- char name[241];
- char number[241];
- cgiHeaderContentType("text/html");
- fprintf(cgiOut, "<HTML><HEAD>\n");
- fprintf(cgiOut, "<TITLE>My CGI</TITLE></HEAD>\n");
- fprintf(cgiOut, "<BODY>");
- cgiFormString("name", name, 241);
- cgiFormString("number", number, 241);
- fprintf(cgiOut, "<H1>%s</H1>",name);
- fprintf(cgiOut, "<H1>%s</H1>",number);
- fprintf(cgiOut, "</BODY>\n");
- fprintf(cgiOut, "</HTML>\n");
- return 0;
- }
从上面的代码可以看出,第13行和第14行获取了输入框的值。
获取输入参数值在CGIC中其实有一族函数,cgiFormString是其中最常用的一个。
cgiFormStringNoNewlines用来去掉换行符(如果用户是在一个TextArea里输入字符的话);
cgiFormStringSpaceNeeded用于测试输入值的长度,可以以此为依据,然后按需精确分配缓冲区。