中国移动互联网研发培训专家
一、CGI概述
CGI接口标准输入
CGI接口环境变量
CGI接口标准输出
二、环境变量
三、From输入的分析和解码
1.分析名字/值对
四、产生HTML输出
五、结束语
www.embedtrain.org www.mobiletrain.org
中国移动互联网研发培训专家
CGI(Common Gateway Interface: 公用网关接口)规
定了Web服务器调用其他可执行程序(CGI程 序)的接口
协议标准。Web服务器通过调用CGI程序实现和Web浏
览器的交互,也就是CGI程序接受Web浏览器发送给Web
服务器的信息,进行处理,将响应结果再回送给Web服务
器及Web浏览器。CGI程序一般完成Web网页中表单
(Form)数据的处理、数据库查询和实现与传统应用系统
的集成等工作。CGI程序可以用任何程序设计语言编写,
如Shell脚本语言、Perl、Fortran、Pascal、C语言等。
但是用C语言编写的CGI程序具有执行速度快、安全性
高(因为C语言程序是编译执行且不可被修改)等特点。
www.embedtrain.org www.mobiletrain.org
中国移动互联网研发培训专家
CGI接口标准包括标准输入、环境变量、标准输出
三部分。
CGI程序像其他可执行程序一样,可通过标准输入
(stdin)从Web服务器得到输入信息,如Form中的数
据,这就是所谓的向CGI程序传递数据的POST方法。
这意味着在操作系统命令行状态可执行CGI程序,对
CGI程序进行调试。POST方法是常用的方法,本文
将以此方法为例,分析CGI程序设计的方法、过程和
技巧。
www.embedtrain.org www.mobiletrain.org
中国移动互联网研发培训专家
操作系统提供了许多环境变量,它们定义了程序的执
行环境,应用程序可以存取它们。Web服务器和CGI
接口又另外设置了自己的一些环境变量,用来向CGI
程序传递一些重要的参数。CGI的GET方法还通过
环境变量QUERY-STRING向CGI程序传递Form中
的数据。
www.embedtrain.org www.mobiletrain.org
中国移动互联网研发培训专家
CGI程序通过标准输出(stdout)将输出信息传送给Web服务
器。传送给Web服务器的信息可以用各种格式,通常是以纯
文本或者HTML文本的形式,这样我们就可以在命令行状态调
试CGI程序,并且得到它们的输出。
下面是一个简单的CGI程序,它将HTML中Form的信息直接输
出到We b浏览器。
# include
# include
main()
{
int i , n ;
printf (″Content type: text/plain\n\n″);
n=0;
www.embedtrain.org www.mobiletrain.org
中国移动互联网研发培训专家
if(getenv(″CONTENT-LENGTH″))
n=atoi(getenv(CONTENT-LENGTH″));
for (i=0;i
中国移动互联网研发培训专家
if (getenv(″CONTENT-LENGTH″))
n=atoi (getenv(″CONTENT-LENGTH″));
此行首先检查环境变量CONTENT-
LENGTH是否存在。Web服务器在调用使用POST
方法的CGI程序时设置此环境变量,它的文本值表示
Web服务器传送给CGI程序的输入中的字符数目,因
此我们使用函数atoi() 将此环境变量的值转换成整
数,并赋给变量n。请注意Web服务器并不以文件结
束符来终止它的输出,所以如果不检查环境变量
CONTENT-LENGTH,CGI程序就无法知道什么时候
输入结束了。
www.embedtrain.org www.mobiletrain.org
中国移动互联网研发培训专家
for (i=0;i