C语言实现CGI交互程序

2012年4月29日 0 条评论 851 次阅读 1 人点赞

CGI概念

通用网关接口(CommonGatewayInterface/CGI)是一个WEB服务器主机提供信息服务的标准接口,通过提供这样的一个标准接口,WEB服务器能执行应用程序并将它们的输出,如文字、图像、声音等传送给一个WEB浏览器。一般来说,CGI标准接口的功能就是在HTML文档与服务器应用程序之间传递信息。

1、CGI程序的通信方式

当有数据从浏览器传到WEB服务器后,该服务器会根据传送的类型是GET或者POST,将这些接收到的数据传入QUERY_STRING或变量中,CGI程序可以通过标准输入,在程序中接收这些数据。当要向浏览器发送信息时,只要向Web服务器发送 特定的文件头信息,即可通过标准输出将信息发往WEB服务器,WEB服务器处理完这些由CGI程序发来的信息后就会将这些信息发送给浏览器。

2、接收数据

用GET方式接收到的数据保存在Web服务器的QUERY_STRING变量里,而通过POST方式接收到的数据是保存在这个Web服务器变量里。它们的唯一区别就是:以GET方式接收的数据是有长度限制,而用POST方式接收的数据是没有长度限制的,所以要变量CONTENT_LENGHT来限制长度。以GET方式发送数据,可以通过URL的形式来发送,但POST方式发送的数据必须要通过Form才到发送。

参数详解

服务器与浏览器之间的信息协议,你实际看不到。有三个类型的头部: Content-type, Location,和Status。Content-type最普遍的。 有关content-type解释可以见有关HTML的说明,一个你可以发出的特定编码象这样:Content-type: text/html,输出数据的类型是text/html;换句话说,是个HTML文件。

实例详解

以经典程序为例说明怎么编写C语言的CGI程序:

Content-type:text/html需要独占一行,并且下面要有个空行。这次先做个留言本,提取了bbs2www中的cgi.c和cgi.h用来编程将更简单。

此次是在apache下实现,请详细配置参见/etc/httpd/conf/httpd.conf文件并且对/var/www/cgi-bin目录进行权限设置。

重剑无锋,大巧不工。

文章评论(0)