词条 | CGI |
释义 | § 基本简介 CGICGICGI脚本简单地讲是个运行在Web服务器上的程序,有浏览器的输入触发。这个脚本通常象服务器和系统中其他程序如数据库的桥梁。 CGI脚本难道不是一个真正的脚本,按照服务器的支持,可能是一个编译好的程序或者批命令文件或者其他可执行的东西。为了简单起见,统称为脚本scripts。 CGI脚本是任何运行在web服务器上的程序。CGI脚本是用下列两种方法使用的:作为一个表单的ACTION或作为一个页中的直接link。CGI脚本有服务器调用,基于浏览器的数据输入。 1、一个URL指向一个CGI脚本。一个CGI脚本的URL能如普通的URL一样在任何地方出现。 2、服务器接收请求,按照那个URL指向的脚本文件(注意文件的位置和扩展名),执行脚本。 3、脚本执行基于输入数据的操作,包括查询数据库、计算数值或调用系统中其他程序。 4、脚本产生某种Web服务器能理解的输出结果。 5、服务器接收来自脚本的输出并且把它传回浏览器,让用户了解结果。 § 配置条件 CGI在使用CGI脚本之前,有两件事也许要解决:CGI脚本是个高级的Web特性并且需要你和Web服务器管理者一样好的知识。 为了能写和运行CGI脚本,你需要一个Web服务器。不象通常的HTML文件,你不能在本地系统上写或试验CGI脚本;通过Web服务器来做这个。但是即使你有一个Web服务器,这个服务器必须特别地为运行CGI脚本配置一下。那意味着你所有的脚本必须放置在一个叫做cgi-bin的目录下。 在编写CGI脚本之前,询问服务器管理者是否允许你安装和运行CGI脚本,并且如果可以的话,他们必须放置在哪儿。还有,必须有个真正的Web服务器,如果是FTP或Gopher服务器,那就不能用CGI。 如果在自己的服务器上运行,你必须特别地创造一个叫cgi-bin的目录,并配置服务器认可这个目录为一个脚本目录。也必须记住下面有关CGI脚本特点: 1、每个脚本是个程序,它运行在浏览器可以请求的系统上,执行时使用CPU时间和内存。如果有成打上千的这些脚本同时运行,系统将不忍负载直至崩溃。 2、如果你不仔细地编写CGI脚本,你将有可能让别人通过CGI脚本参数进入伤害系统。 你可以用你熟悉的任何语言编写CGI脚本,只要脚本遵守下一节所陈列的规则即可,只要那个语言能在Web服务器系统上运行。 在这本学习手册中,仅用两种语言编写CGI脚本:UNIXshell和Perl语言。这个shell是适合在任何相近的UNIX系统上运行并且容易学习,但是处理复杂的情况就困难了。Perl,就要用这个语言了,它是免费的,这个语言是稳定和强大的,类似C,但它也是较难学习的。 为了运行任何一个CGI脚本,不管简单或复杂的,服务器必须设置成能够运行他们,必须放置在一个特定的目录,必须有一个依赖你服务器设定的文件扩展名。如果你是租用服务器,就要是否允许运行CGI脚本。如果你拥有自己的服务器,检查服务器说明书是怎样处理CGI脚本的。 § 输出头部 CGI虽然CGI脚本可以让你做任何事情,但是脚本的输出还是必须有一个规定形式。这个“脚本输出”意思是指脚本发回服务器的数据。在UNIX系统中,输出是发向标准输出,服务器从那儿检测它。在其他系统和服务器,脚本输出也许不一样了。这个头部是实际不是文本的一部分,是服务器与浏览器之间的信息协议,你实际看不到。 有三个类型的头部:Content-type,Location,和Status。Content-type最普遍的。 有关content-type解释可以见有关HTML的说明,一个你可以发出的特定编码象这样: Content-type:text/html 输出数据的类型是text/html;换句话说,他是个HTML文件。 通用格式和content-types。 § 输出数据 输出的数据应该符合你所规定的content-type;如果content-type是text/html,输出安置应该是在HTML。如果content-type是image/gif,输出应该是在一个二进制的GIF文件。 为了传递一个参数给脚本,可以在URL中使用插入脚本名词和参数之间,用加号(+)表示每个单一的参数,如: runmyscript 当服务器接收到这个请求,它传递arg1,arg2,和arg3参数给脚本。你然后能在脚本中使用这些参数。 这个方法有时叫查询,因为早期它用在搜索功能中。 § 登陆检查 CGI既然你知道怎样使用参数,继续上面的例子pinglaura,通过修改这个例子得到下面这个脚本pinggeneric。 #!/bin/sh echo"Content-type:text/html" echo echo"" echo"AreYouThere?" echo"" 在上面的例子中,下一步应该是测试是否登陆,在这里用参数${1}代替名字lemay,${1}作为第一个参数,${2}作为第二个,${3}作为第三个。 ison='who|grep"${1}"' 剩下的所有修改如下: if[!-z"$ison"];then echo"$1isloggedin" else echo"$1isn'tloggedin" fi echo"" 修改HTML页中的连接: IsLauraLoggedin 修改为通用查询功能后是这样,比如查询名字叫john的人是否登陆。 § 脚本输出 CGI有第二种方法传递信息给CGI脚本。它叫作路径信息path information用作那些在脚本调用是不用变更的参数,象一个临时文件名或调用脚本自己的文件名。正如你看到的,在上面的例子问号后面的参数是因用户表单的输入而改变的。路径信息Pathinfo用作其他信息传递给脚本,实际上,你可以用它作任何事情。 路径信息Pathinformation是一种不象通常参数脚本那样频繁传递信息的方法。路径Pathinformation通常是指Web服务器上的那些比如配置文件、临时文件或者被脚本因问题调用的文件等等此类文件。 看下面一个路径信息pathinformation例子, 当脚本运行时,在路径中的信息将被放置于环境参数PATH_INFO。你能在脚本内容中使用这些信息。假设在多页上已有多个连接到同一个脚本。能用这个路径信息显示那个有连接的HTML文件名。这样,在完成处理脚本之后,当你发回一个HTML文件时,能在这个文件里包含一个连接,发回用户一开始那个页。 § 程序语言 CGI既然CGI是一种程序,自然需要用编程语言来写。你可以用任何一种熟悉的高级语言,C,C++,Cshell和VB。值得特别指出的,有一种叫Perl的语言。其前身是属于Unix专用的高级语言,其具有强大的字符串处理能力而成为现在写CGI,特别是表单类程序的首选。最近它已经有了Window95,和winnt版本。 可以在搜索程序里找到在那里下载它。VB是Ms的杀手锏,从目前的情况看,微软公司正试图使VB无所不能,自然也包括在Internet。请各位注意,VB开发的程序只能在windows平台上被执行,所以它有一定局限。CShell,经典的语言。可惜能做的事情不多,而且必须在Unix平台下。C,C++,真正的无所不能。可是在写CGI的时候显得非常难以掌握。特别是缺乏可以灵活使用的字符串处理函数。对程序员的要求也比较高,维护复杂。 CGI可以提供许多HTML无法做到的功能。比如:a.一个记数器b.顾客信息表格的提交以及统计c.搜索程序d.WEB数据库。用Html是没有办法记住客户的任何信息的,就算用户愿意让你知道。用Html也是无法把信息记录到某一个特定文件里的。要把客户段的信息记录在服务器的硬盘上,就要用到CGI。这是CGI最重要的作用,它补充了Html的不足。是的,仅仅是补充,不是替代。 § 相关词条 MYSQLIPICPALEXAPRSEO CGIFSOFTPPOP3WCMECM FLASHWEBGPUCPADIVCSS HTMLBBS.NETXMLAJAXMD5 |
随便看 |
百科全书收录594082条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。