CGI原理与实例
友好例文推荐:CGI详解(原理,配置及访问)
目录
友好说明
我们只需要知道浏览器请求执行服务器上哪个CGI程序就可以了,其他不必深究细节,因为这些过程不需要程序员去操作。服务器和CGI程序之间的通讯才是我们关注的。一般情况下,服务器和CGI程序之间是通过标准输入输出来进行数据传递的,而这个过程需要环境变量的协作方可实现。
首先,我们要先了解一下,CGI是什么,它有什么作用?
- cgi就是一个程序 ,是一个网关接口,让网页与客户端进行通信的。
- CGI是server和client的接口。组成CGI程序的两部分,一部分是HTML页面,就是页面看到的东西。另一部分就是运行在服务器上的程序 。当客户端发送一个CGI请求给WEB服务器后,WEB服务器将根据CGI程序的类型决定数据向CGI程序的传送方式,一般来讲是通过标准输入/输出流和环境变量来与CGI程序间传递数据。
CGI结构示意图
先来看一下CGI的结构图
CGI程序
- CGI程序的工作一般就是接收表单数据,进行数据处理,最后根据处理结果生成新的页面返回给浏览器。表单数据一般是以POST方法提交给服务器,由CGI程序获得,程序必须要将界面数据和内部数据对应起来才能够进行下一步的处理。CGI程序从页面获取数据就根据元素名字/值中的元素名字来进行区分。但CGI返回页面就比较麻烦。由于界面在程序开发完成后还有可能会改变,而且有些需要程序处理的地方可能没有表单元素,因此对程序来说,不能以表单元素名作为区分的基础,一般方法是采用HTML中的注释 <!–XXX–>来标记。
- 程序员需要在模板中为每一个表单元素以及其他任何需要程序处理的地方,按照一定规则,如注释的下一行就是表单元素行,建立其注释标记。CGI程序就可以根据注释标记来判断表单元素信息并进行处理。程序逐行读取模板文件,检查有无注释标记,如有的话,则下一行需要进行处理,给表单元素赋上数据,最后就可以返回带数据的页面给浏览器。
- HTML模板还需要关注的是输入的检查。根据输入检查越早越好的原则,需要在用户界面上就对用户提交的数据进行检查。目前一般是采用javascript脚本的方式。当用户提交数据时,表单对象的onSubmit方法就会被调用,在该方法里就可以对用户的输入进行检查。常用的检查有是否必需、最大/小长度、是否字符、是否数字、email地址、IP地址是否正确、是否匹配一个正则表达式等。
CGI程序开发
CGI程序的工作一般就是接收表单数据,根据应用需求进行数据处理,最后根据处理结果生成新的页面返回给浏览器。表单数据一般是以POST方法提交给服务器,由CGI程序获得,程序根据元素名字/值中的元素名字来区分数据,完成数据处理后,再读取相应的模板文件,根据注释标记将对应的数据填充到HTML文本中去,生成最后的页面返回给浏览器。
程序一般逻辑为:
1.安全性检查,是否允许运行脚本;
2.处理用户提交的数据,根据元素名字/值中的元素名字来区分数据,然后根据应用需求进行数据处理;
3.将处理结果填充表单,根据注释标记将对应的数据填充到HTML文本中去,生成最后的页面返回给浏览器。
了解cgi,可以通过了解CGI编程规范来深入了解。
简要说明
- CGI是一段程序,它运行在Server上,提供同客户端 Html页面的接口。
- CGI功能:通常情况下,CGI程序被用来解释来自表单的输入信息,在服务器产生相应的处理,并将信息反馈给浏览器。CGI程序具有交互功能。
- GCI处理步骤:
- (浏览器)通过internet把用户请求送到服务器,
- 服务器接收用户请求并交给CGI程序处理,
- CGI程序处理结果传送给服务器,
- 服务器将结果送回到客户浏览器。
- CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。
- CGI程序的输出: CGI程序中的标准输出是经过重定向了的。CGI程序并不会在服务器上产生任何的输出内容,而是被重定向到客户浏览器。这样,如果编写一个C的CGI程序的时候,把一个HTML文档输出到它的stdout上,这个HTML文档会被在客户端的浏览器中显示出来。这也是CGI程序的一个基本原理。
- CGI程序第一行输出的内容必须是: “Content-Type:text/html”这个输出作为HTML的文件头。因为CGI不仅可以像浏览器输出HTML文本,而且可以输出图像,声音之类的东西,http服务器向远程发送文件时要说明文件类型。
- 两个重要的CGI环境变量QUERY-STRING:GET方法表单输入的数据,URL中间号后的内容。CONTENT-LENGTH:POST方法输入的数据的字节数。
CGI工作原理
- 浏览器通过HTML表单或超链接请求指上一个CGI应用程序的URL。
- 服务器收发到请求。
- 服务器执行指定CGI应用程序 。
- CGI应用程序执行所需要的操作,通常是基于浏览者输入的内容。
- CGI应用程序把结果格式化为网络服务器和浏览器能够理解的文档(通常是HTML网页)。
- 网络服务器把结果返回到浏览器中。
有关CGI应用程序要注意的是:CGI应用程序运行在浏览器可以请求的服务器系统上,执行时需要使用服务器CPU时间和内存。如果有成千上万的这种程序会同时运行,那会对服务器系统提出极高的要求。你要慎重考虑这个问题,以防止服务器系统崩溃。
CGI环境变量
环境变量列表
变量名 | 作用 |
---|---|
SERVER-NAME | 运行CGI序为机器名或IP地址。 |
SERVER-INTERFACE | WWW服务器的类型,如& |