博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CGI
阅读量:5918 次
发布时间:2019-06-19

本文共 3250 字,大约阅读时间需要 10 分钟。

  hot3.png

CGI - 基本简介

CGI
CGI
CGI脚本简单地讲是个运行在Web服务器上的
,有浏览器的输入触发。这个脚本通常象服务器和系统中其他程序如数据库的

CGI脚本难道不是一个真正的脚本,按照服务器的支持,可能是一个好的程序或者批命令文件或者其他可执行的东西。为了简单起见,统称为脚本scripts。

CGI脚本是任何运行在web服务器上的程序。CGI脚本是用下列两种方法使用的:作为一个表单的或作为一个页中的直接link。CGI脚本有服务器调用,基于浏览器的数据输入。

1、一个URL指向一个CGI脚本。一个CGI脚本的URL能如普通的URL一样在任何地方出现。

2、服务器接收请求,按照那个URL指向的脚本文件(注意文件的位置和扩展名),执行脚本。
3、脚本执行基于输入数据的操作,包括查询、计算数值或调用系统中其他程序。
4、脚本产生某种Web服务器能理解的输出结果。
5、服务器接收来自脚本的输出并且把它传回浏览器,让用户了解结果。

CGI - 配置条件

CGI
在使用CGI脚本之前,有两件事也许要解决:CGI脚本是个高级的Web特性并且需要你和Web服务器管理者一样好的知识。

为了能写和运行CGI脚本,你需要一个Web服务器。不象通常的文件,你不能在本地系统上写或试验CGI脚本;通过Web服务器来做这个。但是即使你有一个Web服务器,这个服务器必须特别地为运行CGI脚本配置一下。那意味着你所有的脚本必须放置在一个叫做cgi-bin的目录下。

在编写CGI脚本之前,询问服务器是否允许你安装和运行CGI脚本,并且如果可以的话,他们必须放置在哪儿。还有,必须有个真正的Web服务器,如果是或Gopher服务器,那就不能用CGI。

如果在自己的服务器上运行,你必须特别地创造一个叫cgi-bin的目录,并配置服务器认可这个目录为一个脚本目录。也必须记住下面有关CGI脚本特点:

1、每个脚本是个程序,它运行在浏览器可以请求的系统上,执行时使用时间和内存。如果有成打上千的这些脚本同时运行,将不忍负载直至崩溃。

2、如果你不仔细地编写CGI脚本,你将有可能让别人通过CGI脚本参数进入伤害系统。

你可以用你熟悉的任何语言编写CGI脚本,只要脚本遵守下一节所陈列的规则即可,只要那个语言能在Web服务器系统上运行。

在这本学习手册中,仅用两种语言编写CGI脚本:UNIXshell和Perl语言。这个是适合在任何相近的UNIX系统上运行并且容易学习,但是处理复杂的情况就困难了。Perl,就要用这个语言了,它是免费的,这个语言是稳定和强大的,类似C,但它也是较难学习的。

为了运行任何一个CGI脚本,不管简单或复杂的,服务器必须设置成能够运行他们,必须放置在一个特定的目录,必须有一个依赖你服务器设定的。如果你是租用服务器,就要是否允许运行CGI脚本。如果你拥有自己的服务器,检查服务器说明书是怎样处理CGI脚本的。

CGI - 输出头部

CGI
虽然CGI脚本可以让你做任何事情,但是脚本的输出还是必须有一个规定形式。这个“脚本输出”意思是指脚本发回服务器的数据。在UNIX系统中,输出是发向标准输出,服务器从那儿检测它。在其他系统和服务器,脚本输出也许不一样了。这个头部是实际不是文本的一部分,是服务器与浏览器之间的 信息协议
,你实际看不到。

有三个类型的头部:Content-type,Location,和Status。Content-type最普遍的。

有关content-type解释可以见有关HTML的说明,一个你可以发出的特定编码象这样:

Content-type:text/html 输出数据的类型是text/html;换句话说,他是个HTML文件。

通用格式和content-types。

CGI - 输出数据

输出的数据应该符合你所规定的content-type;如果content-type是text/html,输出安置应该是在HTML。如果content-type是image/gif,输出应该是在一个二进制的文件。

为了传递一个参数给脚本,可以在URL中使用插入脚本名词和参数之间,用加号(+)表示每个单一的参数,如:

runmyscript
当服务器接收到这个请求,它传递arg1,arg2,和arg3给脚本。你然后能在脚本中使用这些参数。

这个方法有时叫查询,因为早期它用在搜索功能中。

CGI - 登陆检查

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
有第二种方法传递信息给CGI脚本。它叫作 路径信息
path information用作那些在脚本调用是不用变更的参数,象一个临时文件名或调用脚本自己的文件名。正如你看到的,在上面的例子问号后面的参数是因用户表单的输入而改变的。路径信息Pathinfo用作其他信息传递给脚本,实际上,你可以用它作任何事情。

路径信息Pathinformation是一种不象通常参数脚本那样传递信息的方法。路径Pathinformation通常是指Web服务器上的那些比如配置文件、临时文件或者被脚本因问题调用的文件等等此类文件。

看下面一个路径信息pathinformation例子,

当脚本运行时,在路径中的信息将被放置于环境参数PATH_INFO。你能在脚本内容中使用这些。假设在多页上已有多个连接到同一个脚本。能用这个路径信息显示那个有连接的HTML文件名。这样,在完成处理脚本之后,当你发回一个HTML文件时,能在这个文件里包含一个连接,发回用户一开始那个页。

CGI - 程序语言

CGI
既然CGI是一种程序,自然需要用编程语言来写。你可以用任何一种熟悉的高级语言,C,
,Cshell和
。值得特别指出的,有一种叫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的不足。是的,仅仅是补充,不是替代。

转载于:https://my.oschina.net/megan/blog/270330

你可能感兴趣的文章
获取服务器信息
查看>>
Mac OS X在多个显示器上切换桌面托盘dock
查看>>
(四)CSS常用特效属性
查看>>
http结合apache
查看>>
Mac OS u盘安装方法,或者本地磁盘重装方法
查看>>
Error: "app_name" is not translated in "zh" (Chinese) [MissingTranslation]
查看>>
RHEL 5 建立本地yum源
查看>>
【MySQL】了解MySQL中的information_schema
查看>>
MAVEN常用命令
查看>>
2014年七个最明显的web设计趋势及其生存技巧
查看>>
ansible的原理与初步使用
查看>>
Android学习笔记(五)
查看>>
经典设计模式——门面模式
查看>>
(转)DOTA新版地图6.78发布:大幅改动 增两位新英雄
查看>>
JSP九大隐含对象及四个范围对象作用域
查看>>
Navicat For Mysql快捷键
查看>>
proftp 配合 mysql 虚拟用户的配置
查看>>
VMware vSphere 5.1 群集深入解析(二十二)- 数据存储配置
查看>>
NetFPGA-10G入门(一)
查看>>
合成模式
查看>>