CGI简介
下面继续介绍CGI。
CGI是一个连接外部应用程序到信息服务器(比如HTTP或者网络服务器)的标准。一个简单的HTML文档是无交互后台程序,它是静态的,也就是说它处于一个不可变的状态,即文本文件不可以变化。 相反地,CGI程序是可以实时执行地,它可以输出动态的信息。
举个例子吧,如果你想把Unix数据库”挂到”万维网上,并允许世界各地的人可以访问它。基本上,就就需要创建一个CGI程序,它的执行将传递信息给数据库引擎,并且把解雇返回给用户显示出来。这是一个网关的例子。
数据库例子是一个简单的思想,在实际应用过程中更为复杂。实际上没有什么不能挂到网络上面的。但是只有一件事情你必须记住:不管你的CGI程序是怎样,一定不能花太多的时间来处理。否则,用户就做在奔腾机前面静静地等着浏览器的显示结果,这势必伤透了”奔腾的心”。
下面讲讲CGI的特殊要求:
既然CGI程序是可执行的,那基本上就等价于世界任何地方的人可以在你的系统中运行CGI程序,所以这是一种不安全的事情。因此在使用CGI程序的时候,需要一些安全的预防措施。可能,一种有效的方法是将CGI程序放置在一个特殊的目录中,这样网络服务器件只是执行CGI程序而不是将它显示到浏览器中。这个特殊的目录通常处在网络管理员直接控制的目录,这样就可以阻止普通用户创建CGI程序。仍然有其它几种方法可以允许用户访问CGI脚本,但是这需要网络管理员为他进行一些设置。在这一点上,你可能有与网络管理员联系以获得访问CGI权限的冲动。
如果你有一个NCSA HTTPd服务器分布的版本,你将看到一个目录/cgi-bin。这个目录就是上面所提的特殊目录,它就是放置CGI程序的地方。CGI程序可以用任何的语言来编写,并且可以在以下的系统中执行:
C/C++
Fortran
PERL
TCL
任何的Unix shell
Visual Basic
AppleScript
采取什么的语言依靠你的系统支持什么语言而定的。如果你使用过一个编程语言如C或者Fortran,你就会知道在运行程序之前必须对程序进行编译。如果你进入这个目录,你就会发现一些CGI程序的源代码。但是如果你使用其中一种脚本语言,比如PERL、TCL或者Unix shell,脚本就只需要放置在/cgi-bin目录中,因为没有相关的源代码。许多设计人员喜欢使用CGI脚本而不使用编程语言,因为脚本比需要编译的程序语言更容易调试、修改和维护。