CGIC是开源的标准的Ansi C库,很好地封装C语言开发CGI的常用操作,使得用C开发CGI非常地方便。

官方地址:http://www.boutell.com/cgic/#support

下载地址:http://www.boutell.com/cgic/cgic205.zip 

一些例子:

使用CGIC实现Web文件上传的服务端代码

CGIC sqlite3 代码

使用CGIC的基本思路

 

cgic.c      函数库
capture.c   一个很简单的CGI例子,仅仅输出两行提示文字
cgictest.c  一个演示读取form表单数据的CGI例子
首先在vc6里创建一个空的win32静态库cgic,然后添加cgic.c,编译后得到cgic.lib库
创建一个空的console工程cgictest,然后添加cgictest.c,在setting|link添加cgic.lib,编译得到cgictest.exe
将cgictest.exe拷贝到事先创建好的测试网站的cgi-bin下,在iis里右击cgictest.exe浏览,就可以看到一个form表单,几乎所有的控件都包括了
最后以capture.c为例说明一下例子的源码结构:
#include "cgic.h"
int cgiMain() {
cgiWriteEnvironment("/CHANGE/THIS/PATH/capcgi.dat");
cgiHeaderContentType("text/html");
fprintf(cgiOut, "Captured\n");
fprintf(cgiOut, "Captured\n");
fprintf(cgiOut, "Your form submission was captured for use in\n");
fprintf(cgiOut, "debugging CGI code.\n");
return 0;
}
可以看到capture.c实在是太简单了,主函数main被定义在了cgic.c里,在主函数的最后调用了cgiMain(),所有我们要开发一个自己的cgi的话,
只需要实现一个cgiMain()即可,就像capture.c那样。

 

获得Get方式提交的数据

cgic已预先把get方式获得数据存在cgiQueryString中,我们要做需要就是声明一下

#include <stdio.h>
#include "cgic.h"
#include <string.h>
#include <stdlib.h>

extern char *cgiQueryString; //声明get数据变量
int cgiMain() {
cgiHeaderContentType("text/html");
fprintf(cgiOut, "<HTML><HEAD>\n");
fprintf(cgiOut, "<TITLE>My CGIC</TITLE></HEAD>\n");
fprintf(cgiOut, "<BODY>");
fprintf(cgiOut, "<H1>%s</H1>",cgiQueryString);
fprintf(cgiOut, "</BODY>\n");
fprintf(cgiOut, "</HTML>\n");
return 0;
}

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐