在<<C语言写cgi程序(上)>>中,我们大概知道了cgi的工作原理。今天我们看看c语言写的cgi,是怎么来处理数据的。
c语言中,通过getenv("环境变量")函数来获取页面传送给cgi的数据,一般通过printf()返回给页面一些数据。
其中C语言中的环境变量包括:
HTTP-REFERER:调用该CGI程序的网页的URL。
REMOTE-HOST:调用该CGI程序的Web浏览器的机器名和域名。
REQUEST-
METHOD:指的是当Web服务器传递数据给CGI程序时所采用的方法,分为GET和POST两种方法。GET方 法仅通过环境变量(如
QUERY-STRING)传递数据给CGI程序,而POST方法通过环境变量和标准输入传递数据给CGI程序,因此POST方法可较方便地传递较多的数
据给CGI程序。
SCRIPT-NAME:该CGI程序的名称。
QUERY-STRING:当使用POST方法时,Form中的数据最后放在QUERY-STRING中,传递给CGI程序。
CONTENT-TYPE:传递给CGI程序数据的MIME类型,通常为〃applica tion/x-www-form-url encodede〃,它是从HTML Form中以POST方法传递数据给CGI程序的数据编码类型,称为URL编码类型。
CONTENT-LENGTH:传递给CGI程序的数据字符数(字节数)。
通过例子,可以更好的理解cgi和其工作原理。
1.搭建web服务器
我们选用的webServer是轻量级服务器mongoose。mongoose源码下载地址:http://pan.baidu.com/s/1mg0vs4w
mongoose是一个开源项目,有兴趣可以研究一下。
在Linux系统下编译源码:make linux
通过运行命令./mongoose启动服务器或者./mongoose &后台运行。
输入http://IP:8080测试服务器:
2.编写index.html页面,代码如下:
页面打开如下:
3.编写我们的cgi程序
编译该程序生成cgi文件
4.点击页面按钮,看下效果:
OK,一个简单的cig写完了,当然可以调用环境变量接收WEBSERVER传过来的数据,做更复杂的操作。