荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: icefire (懒懒的心懒懒的我), 信区: Program
标  题: [转载] [转寄] (转载)CGI工作原理
发信站: BBS 荔园晨风站 (Sun Nov 22 19:16:18 1998), 站内信件

【 以下文字转载自 icefire 的信箱 】
【 原文由 icefire.bbs@melon.gznet.edu.cn 所发表 】
发信人: badgirl ( 赵姬), 信区: CGI
标  题: (转载)CGI工作原理
发信站: 华南网木棉站 (Tue Nov 17 22:27:31 1998), 转信

WEB页面的交互能力增强了Internet的功能,目前可以采用多种方法增强
Internet的交互能力,如Java Applet、ActiveX对象和CGI命令文件,其中
CGI(Common Gateway Interface,公共网关接口)编程是开发人员最常采用
的一种方法。最常见的形式就是利用CGI命令文件创建WEB页面上的交
互表格,用户访问该页面时,可以向表格中输入信息,然后提交给服务器
处理,服务器将用户提交的信息交给CGI程序处理之后将结果返回给用户。
CGI是服务器上运行的网关守护进程。根据客户端在进行请求时所采用的
方法,服务器负责收集有客户端提供的信息,并根据客户端请求的CGI脚
本程序文件名执行该脚本程序。CGI脚本程序启动后,服务器将客户端的
信息传递给此程序,该程序对客户信息处理后,将运行结果交给服务器
,由服务器负责在向客户端传递。处理完毕后CGI程序结束运行。整个过
程如下图:


图一 CGI工作过程
在CGI通讯过程中,服务器所做的工作主要是发送和返回信息,而实际
上整个信息的处理工作则是由CGI程序完成。
CGI脚本程序运行时,服务器使用环境变量(在C语言编写的程序中可以用
getenv函数获得环境标量)和标准输入(STDIN)和标准输出(STDOUT)与CGI
脚本程序进行信息传递,环境变量分为服务器信息变量、客户端信息变量
和Script信息变量,表一显示了常用的环境变量,通过环境变量,CGI
程序可以获得服务器和客户端的一些信息,以便进行处理。在HTML的表
单中,一般使用POST方法请求服务器上处理表单输入的CGI脚本,这时
,CGI程序通过读标准输入(STDIN)获得表单中输入的各项内容,通过写
标准输出(STDOUT)发送回传客户端的信息。GET方法只能通过环境变量
获得信息。不能使用STDIN/STDOUT。
通过对以上CGI工作流程的分析,可以发现使用任何一种编程语言来编写
CGI脚本程序,常用的CGI脚本编程语言有Perl、C、C++、Visual Basic
的多种语言。一般地,在UNIX主机服务器上较多的使用Perl,而在微机
服务器上较多使用的是C语言。
在CGI程序设计中表单 一个重要的概念,表单属于HTML的内容的范畴
,它是用户输入信息的基本手段,浏览器使用表单获取客户端的信息后发
送给服务器 ,CGI脚本程序通过使用STDIN获取这些信息。
类型    变量    含义
服务 器信 息变 量       SERVER_SOFTWARE 服务器软件的名称和版本
        SERVER_NAME     服务器的名称
        GATEWAY_INTERFACE       CGI网关的名称和版本
        SERVER_PROTOCAL 服务器传输协议的名称和版本
        SERVER_PORT     服务器连接的端口,一般为80
        REMOTE_HOST     发出请求的客户机的域名,若无域名则为NULL
客户 端信 息变 量       REMOTE_IP       发出请求的客户机的IP地址
        REMOTE_USER     若某个HTML文档是受口令保护的,由此变量获得访问者的名称和
密码
        REMOTE_IDENT    访问者在服务器上登陆的用户名和密码
        HTTP_****       HTTTP协议传输客户端附加信息
Script 信息 变量        REQUEST_METHOD  客户端请求的方法
        PATH_INFO       所请求的GRL在CGI目录以下的路径信息
        PATH_TRANSLATED 所请求的URL在服务器上的全路径信息(包括CGI目录)

        SCRIPT_NAME     CGI脚本的文件名
        QUERY_STRING    使用GET方法时,请求中的查询的信息
        CONTENT_LENGTH  在STDIN中存的用户信息长度
        DOCUMENT_URI    请求的文档的URL路径和名称
下面是一个使用表单的HTML例子:
<HTML>
<HEAD><TITLE>TEST CGI</TITLE></HEAD>
<FORM ACTION="/CGI_BIN/index.exe" METHOD="POST"
Please input:<INPUT TYPE="text" NAME="select">
Please select:<SELECT NAME="select">
<OPTION VALUE="1" >FIRST
<OPTION VALUE="2" >SECOND
<OPTION VALUE="3">THIRD
</SELECT><br>
<INPUT TYPE="submit" value="OK">
</FORM>
</HTML>
   该HTML文件在Netscape浏览结果如图二:
   语句Please input:<INPUT TYPE="text" NAME="input">产生输入框,语句
Please select:<SELECT NAME="select">
<OPTION VALUE="1" >FIRST
<OPTION VALUE="2" >SECOND
<OPTION VALUE="3">THIRD
</SELECT>
产生选择输入框。语句<INPUT  TYPE="submit" VALUE="OK">产生OK按钮。


图二 使用Netscape浏览表单例子
     如果此HTML文件放在服务器上被用户浏览,当用户输入图三所示信息
并且按OK按钮时,则客户机将使用POST方法向服务器的/cgi-bin/index.cgi发
出请求,请求的方法和内容由语句<FORM ACTION="/CGI-BIN/index.exe
METHOD="POST">决定。服务器响应请求后,开始执行 index.exe,这时客户
端的一些信息包括用户输入的表单信息以由服务器获得,Index.exe程序通过环
境变量获得这些信息,通过读STDIN获得用户输入的表单,然后index.exe就
可以做相映的处理了。如输入为图三所示内容,则可以STDIN读入的数据流为
如下的ASCII字符串:
   input=nice to meet you&select=2


       图三  用户输入信息
   STDIN中字符串的内容按表单输入顺序,各项的值以NAME=VALUE的模
式表达,并用“&"分割。读取STDIN的数据后使用程序加以处理,即可得到
用户输入的相应内容。
   表单提供了一种友好而方便的界面,使得浏览者能够与CGI脚本之间进行
信息交互。

--
※ 来源:.华南网木棉站 bbs.gznet.edu.cn.[FROM: 202.38.212.56]
--
※ 转寄:.华南网木棉站 bbs.gznet.edu.cn.[FROM: linux.szu.edu.cn]
--
※ 转载:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.0.22]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店