cgic基本知识

CGIC相关知识

www.boutell.com/cgic/#obtain网站中或许CGIC源程序。解压后,其中文件如下:

Cgic.h:头文件;

Cgic.cCGIC的源代码文件;

Cgictest.cCGIC库的作者提供的一个CGI程序例子;

Capture.c:用于调试CGI程序的工具;

Makefile:安装CGIC的脚本文件;

整个CIGC实际上是一个CGIC.C一个文件,非常精炼。只要在编写CGI程序时,将CGIC.CCGIC.H两个文件放到当前文件夹下,进行编译就可以了。

运用CGIC来编写CGI程序,大大简化了直接用C来编写CGI程序的过程。它解决了CGI程序和HTML互交的问题。

 

 

CGIHTML间的互交的实现

拥有CGIC之后,CGI程序的编写不再是由Main()开始,而是由cgiMain()开始。

在打印时候,基本使用fprintf(cgiOut,””,)其中的cgiOut实际上就是stdin

在打印HTML时候需要明确HTML头部声明类型,一般情况下text/html为类型,则在打印HTML文本前,调用cgiHeaderContentType(“test/html”);这个语句来告诉浏览器,这次传来的数据是什么类型,是一个HTML文档,还是一个BIN文件,如果是HTML文档,就通过浏览器窗口显示,如果是一个BIN文件,则打开下载窗口,让用户选择是否保存文件以及保存文件的路径。

获得Get请求字符串

Get请求就是我们在浏览器地址栏中输入URL时发送的请求方式,或者我们在HTML中电议一个表单(form)时,把action属性设为“Get”时的工作方式;

Get请求字符串就是跟在URL后面以“?”开始的字符串,但不包括问号。比如这样一个请求http://127.0.0.1/cgi-bin/out.cgi?ThisIsTheGetString。那么ThisIsTheGetString就是Get请求的字符串。在CGIC中,已经把这个字符串取到了,我们可以直接在程序中获得,要做的仅仅是在编写程序的时候加入声明

Extern char *cgiQueryString

利用这个就可以解决互交中的一个问题,就是链接中的参数数据,我们可以把问号之后的的字符串看成是一个参数,可以用此参数来加以区分。

接下来要解决表单(form)提交数据的问题:cgic中提供了一个cgiFormString()这个函数,可以通过此函数,将form中的字符串数据取出来,函数原型是

cgiFormResultType cgiFormString( char *name, char *result, int max)

name为程序中需要定义取值的字符,resulthtml中所要被取值的文本标签,max为取到多少长度的字符,一般情况下为name的长度。用这个方法,解决了表单提交HTML中的部分标签中的数据的读取。

最后要解决如何使得CGI程序知道了表单提交的数据是否正确提交。在CGIC中有cgiFormResultType cgiFormSubmitClicked( char *name)来解决此问题。当其值为cgiFormSuccess的时候标识表单提交成功,其中的nameHTML中表单中的submit标签的name名。用此方法也可以来区分哪个表单提交的问题,解决多个表单和一个CGI之间的关系。

以上方法已经基本上可以解决简单的CGI程序代码的编写,尤其是像嵌入式的CGI的开发,其主要基本功能都可以通过以上简单方法实现。

CGIC还提供了很多普通网站中较为深层次的函数来解决HTMLCGI之间的互交关系。例如普通网站中的cookieSession等等在CGIC中都有相应的函数来获取其中值来进行相应的操作。这些有待于以后开发研究。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值