CGIC介绍
怎样写CGIC应用程序
怎样产生图片在CGIC中?
CGI调试特征: 利用捕获
cgic函数参考
cgic变量参考
cgic结果编码参考
cgic快速索引
一般的Unix系统都支持ANSIC,增加相应的库函数(和相应的h文件)就可以实现CGI。在此我向大家推荐一个用于CGI编程的ANSIC库:cgic。
cgic是用来生成基于CGI的WWW应用程序的C语言函数库,它有以下功能:
*对数据进行语法分析
*接收以GET和PSOT两种方式发送的数据
*把FORM中的不同域连接成连续的串
*为检索FORM数据而提供字符串,整数,浮点以及单项和多项选择功能
*为数字字段提供边界检测
*把CGI环境变量加载到非空的C串中
*为调试而捕捉CGI状态
*提供相对安全的系统调用功能
用一般ANSI C或C++编译器就可以编译cgic程序,不过与通常C程序不同的是,用cgic写的源码其主函数是cgiMain(),而不是通常的main()。cgic的函数库会自动把cgiMain连接到相应的main()上去。
--------------------------------------------------------------------------------
写CGIC程序
Note: 所有的cgic应用程序必须连接cgic.c.
用cgimain()替代main() 必须包含: #include"cgic.h."
基本结构cgictest.c:
int cgiMain() {
#if DEBUG
cgiReadEnvironment("/path/to/capcgi.dat");
#endif
cgiHeaderContentType("text/html");
fprintf(cgiOut, "<HTML><HEAD>/n");
fprintf(cgiOut, "<TITLE>cgic test</TITLE></HEAD>/n"):
fprintf(cgiOut, "<BODY><H1>cgic test</H1>/n");
Name();
Address();
Hungry();
Temperature();
Frogs();
Color();
Flavors();
NonExButtons();
RadioButtons();
fprintf(cgiOut, "</BODY></HTML>/n");
return 0;
}
capture
输出标头
cgiHeaderContentType()在输出文挡之前简要说明MIME内型,如 "text/html"。
cgiHeaderStatus()代替输出错误代码 cgiHeaderLocation()代替重新引导至其他页面。在一个独立的应用程序中只能有一个cgiHeader函数。
重点:在cgiHeader函数组中, cgiHeaderContentType(), 在任何向浏览器输出之前被调用. 否则将出错或浏览器不能识别。 cgiOut
接着, cgiMain() 调用不同的函数.当函数结束后,将返回0
处理输入文本
void Name() {
char name[81];
cgiFormStringNoNewlines("name", name, 81);
fprintf(cgiOut, "Name: %s<BR>/n", name);
}
这个函数的功能就是取的并显示由用户输入的name .
处理输出
Important: cgiOut通常相当于stdout
cgiFormString 确保断航
处理单一Checkboxes输入
这个Hungry() function确定用户是否选择"hungry"这个 checkbox:
void Hungry() {
if (cgiFormCheckboxSingle("hungry") == cgiFormSuccess) {
fprintf(cgiOut, "I'm Hungry!<BR>/n");
} else {
fprintf(cgiOut, "I'm Not Hungry!<BR>/n");
}
}
这个函数依靠 cgiFormCheckboxSingle() 确定单一的