Network 版 (精华区)
发信人: yunguo (~@_@~liuliu), 信区: Network
标 题: CGI与WWW服务中的编程
发信站: 紫 丁 香 (Sat Oct 3 19:40:59 1998), 转信
作 家: diming (还是丁丁好)
当前, WWW 应用正处于蓬勃发展的阶段, 许多单位或部门正计划把自己的相关信息
放入WWW服务器, 然而, 由于WWW编程中用到的HTML语言, 只适用于静态文本的编程, 如
果要与数据库相连, 进行数据库查询等, 就必须编写专门的cgi程序。
一、WWW服务的两种形式 从技术的角度来说, WWW服务有两种形式: 静态访问和动态
访问。静态访问是指WWW服务器将预先存放的HTML文件原封不动地返回给用户。动态访问
是指用户发出的请求含有动态生成过程及其参数, WWW服务器接受用户的请求后,将用户
的请求通告相应的的接口传给后台的其它服务进程, 有后台的服务进程处理用户的请求
, 生成相应的结果, 返回给WWW服务器, 由WWW服务器将后台处理的结果返回给用户。因
此,用户而已通过统一的访问界面(如NETSCPAE)访问事先放置的静态信息和动态生成的
数据库和应用信息。
二、WEB成为交互式每体的两种机制
使WEB成为交互式每体的两种机制使表格和网关。表格可以让您的读者把信息反馈给
您, 或反馈给您所建立的处理这些信息的程序, 这样可以形成双向和交互式通信。但是
所返回的表格只是问题的一个方面,要处理所有返回的信息,必须建立一个能接受读者
流览器发出信息的程序,这些程序叫做通用网关接口(Common Gateway InterFace),即CGI
,或叫做CGI程序.
三、CGI程序的实质
CGI变成,可根据实际情况(服务器提供的接口,实际需求和程序员经验等)选择变成的
语言,如C/C++、PERL、TCL、Anyy Unix shell、VB、Applescrippt。如果选用C/C++等语
言,必须编译成可执行文件; 如果选用PERL等解释语言,服务器上必须安装相应的解释器
并完成相应的文件联结。
服务器使用环境变量(执行CGI程序时的设置)传输有关的请求信息到CGI程序.这些环
境变量包括服务器的名字、CGI和服务器使用协议的版本号、客户端的IP地址和域名地址
、客户端的请求方式、请求内容及编码方式、合法性访问信息以及用户的输入信息等。
四、CGI在编程在NETWARE WEB SERVER环境中的一个实例
1、NETWARE WEB SERVER中RCGI Low-level InterFace Report的环境变量值:
Server_software=Novell HTTP Server/2.0r11(NLM)
Server_name=168.1.100.2
Gateway_interface=RCGI/1.0
Server_protocol=HTTP/1.0
Server_port=80
http_accept=*/*,image/gif,image/x-xbitmap,image/jpeg
path_info=/
path_translated=sys:/web/docs/
Remote_host=168.1.100.66
Remote_addr=168.1.100.66
2、CGI编程要实现的功能
某单位为了在本系统内的Intranet网上实现自动生成HTML文档,自动产生导航链接点
,以使日常工作中大量文件以WWW信息的形式向本单位提供,通红司避免人手工进行大量的
HTML文档生成,达到既要保证大量信息每天的即使更新, 又要减少工作人员的数量几劳动
程度的目的。
3、CGI程序实现上述功能
本CGI程序的编写使用PERL语言实现的,在NETWARE WEB SERVER环境下,PERL RCGI文件
存放在SYS:WEB\SCRIPTS\PERL目录中,故本程序存放在这一缺省目录中。
require("cgi-lib.pl");
print&PrintHeader;
& readparse;
$server="http://".$ENV{"SERVER_NAME"}."/";
$v1=$in{"item"};
$v2=$in{"month"};
$v3=$in{"day"};
$v4="rcd";
#print html header
print"<html>";
print"<head> <title> 新华社信息分类索引</title></head>\n<body>";
print"<img src=\"/images/new.gif\" align=left border=0>";
print"<font size=+3><center>信息索引</center></font>\n"
print"<hr size=4 widdth=90%>\n";
$v8="/";
$v9="XINHUA/";
$v10="<a href=\"";
$v11="\">Display the file:";
$v12="</a> <p>";
$filename="$ path $v1 $v8 $v1 $v4.$v2 $v3";
open(FILE,"$filename");
@LINES=<FILE>
close(FILE);
$SIZE=@LINES;
$server="http://".$ENV{"SERVER_NAME"}."/perl/type.pl?fn=";
#$path="./DOCS/XINHUA/";
$j=0;
for($i=0;$i<=$size;$i++)
{
$_=$lines[$i];
$j=$i+1;
$filename="$path$v11$v8$v1$v5$j.$v2$v3";
$link="$server$filename;
if($j<110
{
$v5="00"
$filename="$path$v1$v8$v1$v5$vj.$v2$v3";
$link="$server$filename";
print"<a href=\"$link\">$_</a><br>\n";
}
else
{
if($j<100)
{
$v5="0"'
$filename="$path$v1$v8$v1$v5$vj.$v2$v3";
$link="$server$filename";
print"<a href=\"$link\">$_</a><br>\n";
}
else
{
$v5=" ";
printf"<a href=\"$link\">$_</a><br>\n";
}
}
}
#print tail of html
print"<hr>";
print"<pre><font size=+1><i>使用顶部菜单中 Go/Back 返回前
一页面</i></font></pre>";
print"</body></html>\n";
当用户端通过浏览器返回一个信息,如表格、数据库查询等,在本程序中返回的是浏
览相关的主题,这个信息触发本CGI程序,于是服务器后台进行相关处理,将处理结果送给用
户端,在用户看来,所查询的信息就是早已生成的HTML文档,用户丝毫觉察不出来是通过CGI
接口返回的自动生成的HTML文档.
--
※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: 202.118.233.18]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:4.694毫秒