赞助广告 赞助广告
  当前位置:网络学院程序设计C/C++/VC → 简明CGI教程
简明CGI教程
日期:2001年7月17日 作者:不详 人气: 查看:[大字体 中字体 小字体]
工作原理

CGI是服务器上运行的网关守护进程。根据客户端在进行请求时所采用的方法,服务器负责收集由客户端提供的信息,并根据客户端请求的CGI脚本程序文件名,执行该脚本程序。所谓脚本程序就是该程序在CGI控制下运行程序。CGI脚本程序启动后,服务器将客户端的信息传给此程序,该程序对客户的信息处理后,将运行结果交
给服务器,由服务器负责再向客户端传递。
CGI脚本是用下列两种方法使用的:
1、作为一个表单的ACTION
2、作为一个页中的直接link。

这有个简短的工作示意:
1、一个URL指向一个CGI脚本. 一个CGI脚本的URL能如普通的URL一样在任何地方出现。
2、服务器接收请求, 按照那个URL指向的脚本文件(注意文件的位置和扩展名),执行脚本。
3、脚本执行基于输入数据的操作,包括查询数据库、计算数值或调用系统中其他程序。脚本产生某种Web服务器能理解的输出结果。
4、服务器接收来自脚本的输出并且把它传回浏览器,让用户了解结果。

一个指向CGI脚本的连接,它的HTML是这样的:
<A HREF="http://linux.cgi.com.cn/~zzy71616/cgi-bin/getdate.cgi">Display the Date</A>
说明是个CGI脚本是因为这里面有个cgi-bin的路径。在许多服务器cgi-bin是仅能够放置CGI脚本的目录。当你选择这个连接时, 你的
浏览器将向:linux.cgi.com.cn服务器提出请求。服务器接收这个请求计算出URL处的脚本文件名然后执行这个脚本.

环境变量

CGI脚本程序运行时,服务器使用环境变量和标准输入、标准输出与脚本程序进行信息交换。
下表显示常用环境变量:


类型 变量 含义
服务器信息 SERVER_SOFTWARE 服务器软件名称及版本
SERVER_NAME 服务器名称
GATEWAY_INTERFACE CGI名称及版本
SERVER_PROTOCAL 服务器传输协议名称及版本
SERVER_PORT 服务器连接的端口
REMOTE_HOST 客户机域名
客户机信息 REMOTE_IP 客户机IP地址
REMOTE_USER 获得访问者使用HTML的输入密码
REMOTE_IDENT 获得访问者登录服务器的输入密码
脚本信息 REQUEST_METHOD 客户端请求的方法
PATH_INFO 客户端请求的CGI的路径
PATH_TRANSLATED 客户端请求的CGI的全路径信息
SCRIPT_NAME 客户端请求的CGI名称
QUERY_STRING 请求中的查询信息
CONTENT_LENGTH 用户信息长度
DOCUMENT_URI 请求文档的路径和名称


脚本放置
你的脚本必须放在有执行权限的目录中。

如果你的服务器是UNIX:
确定你的脚本是可执行的方法为:
用chmod +x 你的脚本.cgi或:chmod 755 你的脚本.cgi
如果你的服务器是PERSON WEB或WINDOWS NT:
把你的脚本必须放在可执行目录中。

如果客户端是win95,使用远程服务器,可以用telnet登陆你的服务器,执行命令行,当然必须了解UNIX命令。
如果客户端是win95,使用内部网WINDONS NT或 PEER WEB 的服务器,执行CGI程序与其他程序差不多。


在实际中,一般免费网域均不提供执行目录,所以要制作CGI程序,就有必要寻找一个提供CGI存放服务的免费网域。如:
重庆太阳城
联讯


Web服务器设置

如果你既不想登陆到远程服务器,有没有内联网的服务器,那你要调试CGI程序就必须设置个人的Web服务器。

1、 首先,要为计算机设置TCP/IP协议
 在“控制面板”的“网络”中添加TCP/IP协议,然后在“TCP/IP属性”中的“IP地址”标签中选择指定IP地址”并输入任意一个正确的IP地址。在“DNS配置”标签中选择“使DNS无效”。当然,
也可以不指定IP地址,那么在以后就只能通过机器名称来识别web服务器了(http://yomachine,机器名称可以在“控制面板”,“网络”中查出)
 
2、安装个人Web服务器,方法如下:
(1) 在“控制面板”的“网络”的“配置”标签中单击“添加”按钮;
(2) 在弹出的“选择网络组件类型”对话框中,选择“服务”在“厂商”栏中选择“Microsoft”,在“网络服务”栏中选择“PersonalWeb Server”,然后单击“确定”按钮。这时Windows 95将自动安装Personal Web Server。
(3) 安装完成后,“控制面板”中会出现“个人Web服务器”图标,双击图标即可以对自己的个人Web服务器做设置了
 

3、设置CGI程序的运行目录
在“控制面板”中双击“个人Web服务器”图标,选择“管理”标签下的“管理”按钮,这时Personal Web Server会自动启动你的浏览器,并要求连接,连接成功后,显示Internet 服务管理页面。选择“WWW管理”,选择“目录”,选择“ADD”,在WWW服务器中加入你的CGI-BIN目录,然后,一定不要忘了,要把它设为可执行。同时,建议你把它虚拟为"cgi-bin"目录,这样在你的HTML里面你就可以用"/cgi-bin/???.cgi"来调用CGI程序了全部设置好之后,可以在浏览器中打“http://你的机器名称”或者“http://你的机器的IP”来检验一下你的设置。


一个C编写的CGI例子

一、编辑test.c

#include<stdio.h>
#include<stdlib.h>
#include<windows.h>

void PrintMimeHead(){
printf("Content-type:text/htmln");
printf("Progma:no-cachen");
printf("n");
}

void PrintHtmlHead(){
printf("<html>n");
printf("<head></head>n");
printf("<body>n");
printf("<h1>hello!</h1>n");
}

void PrintHtmlTailer(){
printf("</body>n");
printf("</html>n");
}

void PrintForm(){
printf("<form method=POST action="%s">n",getenv("SCRIPT_NAME"));
printf("your name:<input type=text name=name size=20><br>n");
printf("your email:<input type=text name=mail size=30><br>n");
printf("<input type=submit value="ok"><br>n");
printf("</form>");
}

void ProcessDate(){
int i,x;
int len;
char input_date[1000]="";
char *StringLen;
StringLen=getenv("CONTENT_LENGTH");
if(StringLen!=Null)
len=atoi(StringLen);
else len=0;

for(i=0;i<len;i++)
{x=fgetc(stdin);
if(x==EOF) break;
input_data[i]=x;
}

printf("you enter:%sn",input_data);
}



void main(){
char *pRequestMethod;
setvbuf(stdout,NULL,_IONBF,0);

pRequestMethod=getenv("REQUEST_METHOD");
if (pRequestMethod==NULL)
{printf("no form run!");}
else if(stricmp(pRequestMethod,"get")==0){
PrintMimeHead();
PrintHtmlHead();
PrintForm();
PrintHtmlTailer();
}
else if(stricmp(pRequestMethod,"post")==0){
PrintMimeHead();
PrintHtmlHead();
ProcessDate();
PrintForm();
PrintHtmlTailer();
}
else{
PrintMimeHead();
PrintHtmlHead();
printf("no Method!");
PrintHtmlTailer();
}

fflush(stdout);
}

二、编译TEST.C
三、存放到服务器默认CGI目录中
四、编辑HTML调用TEXT.EXE,即可。

一个PERL编写的CGI例子

 为了让在Win95上调好的CGI程序在其他的操作系统上都能使用,我们选择Perl作为CGI编程语言Perl是一个很好用的CGI编程语言,与其它的编程语言相比较,它具有在Unix、WinNT、Win95、Dos、Linux、FreeBSD、OS2、Macitosh等操作系统上都能使用的优点

要在自己的Win95上调试Perl CGI程序,需要做两件事情:
1、设置Web服务器
2、安装Perlfor Win32
在自己的Win95上调试准跨平台的CGI程序
安装Perl for Win32

要在Windows 95上使用Perl来执行CGI程序,还要再安装Perl for Win32 系统Perl for Win32 在perl32可以下载下载了109-i86.zip并解压到某一个盘上后,运行Perl目录下的install.bat,

系统会分别提问:
1.Do you wish to proceed?  Y
2.Modify search path?  Y
3.continue to install perlIS.dll?  Y
4.please choose a file extension to associate with PerlIS.dll
  Extension: 按你的情况,键入CGI程序后缀“pl”或者“cgi”
这时,按我们的实验,应该是已经可以运行CGI程序的了,可以用记事本写一个简单的CGI脚本试一试。用记事本新建一个文件,然后把下面的代码Copy进去,再将它保存为CGI-BIN目录下的test.cgi或者test.pl(视安装过程中你对第四个问题的回答而定)

#!/usr/bin/perl
print "Content-type:text/htmlnn";
print"恭喜!CGI程序运行成功了!"


把这个文件放在你自己的可执行的cgi-bin目录中。
然后新建一个名称为test.htm的HTML文件,放在你的某一个WWW目录中。其内容如下:
<html>
<body>
<a href="http://你的机器名称/cgi-bin/test.cgi">测试CGI(.cgi后缀)</a>
<body>
</html>


接下来运行测试。打开浏览器,在地址栏中键入“http:// 你的Web服务器名/www目录/test.htm”,会出现一个联接,按下这个联接,就可以查看CGI程序的运行结果。失败的情况有成千上万种,但是成功的结果只有一个,就是在屏幕上出现了“恭喜!CGI程序运
行成功了!”。当然,因为win系统不能正确判断输出类型的原因,“恭喜”前面也许还会有一行“Content-type:text/html”。这个不要紧,当你在其它操作系统上用这个CGI程序时,它会消失的!
当然,也可以从网上的另一台计算机来测试,只需要在一个健康的TCP/IP网络上输入正确的URL就行。如果CGI程序还不行,你需要修改Windows 95的注册表了。方法是先运行注册表编辑器regedit,然后依次打开“HKEY_LOCAL_MACHINESystemCurrentcontrlsetServicesW3svcParametersScriptMap”,

加入“.pl ‘C:PERLBINperl.exe%s %s’”
(或者.cgi......)。
退出注册表文件后,重新启动计算机,然后进入CGI-BIN目录下,从中任选一个扩展名为.pl或者.cgi的程序文件并双击,这时系统会出现一个列表窗口,询问使用什么程序来打开这种文件,在文件列表中找到“perl”(如果找不到可以在“其他”项中按路径来指定),并选定“始终使用该软件打开这种类型的文件”项,单击“确定”即可。
 
Windows NT Server 4.0中的Web 服务功能通过NT自带的IIS(Internet InformationServer) 来实 现。在Windows NT Server 4.0 中Perl for win32的安装过程与Windows95基本一样,只是修改注册表时应加入的内容为:
“.pl:REG_SZ:C:PerlBinperl.exe%s %s”。

(出处:不详 )

相关文章:
 
·ASP实现文件在线压缩和解压缩
·网际快车FlashGet使用技巧荟萃
·一个天气预报的小偷
·Are you ready?
·ASP简介
·ASP基础
·ASP脚本基础
·ASP脚本变量、函数、过程和条件语句
·乔客论坛惊暴UPfile严重漏洞!
·ASP脚本循环语句
相关软件:
 
·动感下载系统 2.0(access版)k170美化版带天空华军小偷
·风韵设计综合娱乐网 v4.0 功能增强完美版
·Boai BLBS V1000
·Boai BLBS V3.3
·中国龙BlogVer 1.1.0MX版
·中国大学生设计网 全站程序第三版
·518主机域名在线管理平台 v1.5
·Zend StudioClient V3.5.1 特别版
·Zend Studio Client for Linux V3.5.1 特别版
·PHP v4.3.9 RC1
  特别推荐
  热点TOP10