Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3126380
  • 博文数量: 685
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 5303
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-19 14:17
个人简介

文章分类

全部博文(685)

文章存档

2015年(116)

2014年(569)

分类: LINUX

2014-09-14 09:50:58

原文地址:

CGI 意思为 Common Gateway Interface, 一种基于浏览器的输入、在Web服务器上运行的程序方法. CGI脚本 使你的浏览器与用户能交互,为了在数据库中寻找一个名词, 提供你写入的评论,或者从一个表单中选择几个条目并且能得到一个明确的回答. 如果你曾经遇到过在web上填表或进行搜索, 你就是用的CGI脚本. 你那时也许没有意识到,因为大部分工作是在服务器上运行的,你看到的只是结果.

作为一个者, 你创建客户端的 CGI脚本, 服务器端的程序用来处理用户输入, 结果返回给用户.

在这里你将学习关于CGI脚本的一切:

  • CGI脚本是什么?它是怎样工作的
  • 一个CGI脚本输出象什么?
  • 怎样用参数或无参数创建一个CGI脚本
  • 怎样创建一个返回规定响应的CGI脚本
  • 怎样创建一个输入表单的CGI脚本
  • 有关在使用CGI脚本中的问题
  • 你能在脚本中使用的CGI变量

本章节假设在UNIX系统下的。 









CGI脚本是什么?

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

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


CGI 脚本是任何运行在web服务器上的程序. CGI意思是Common Gateway Interface。




CGI脚本是用下列两种方法使用的: 作为一个表单的ACTION 或 作为一个页中的直接link。


CGI脚本是怎样工作的?

CGI脚本有服务器调用, 基于浏览器的数据输入. 图1 显示在浏览器、服务器和脚本之间是怎样的一个流程.

 记住再回来噢!

这有个简短的示意解释:

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

一个简单的例子

这里详细一步一步地解释所有有关发生的细节。 
图2: 

Display Date处是个指向CGI脚本的连接. 它的HTML是这样的:

Display the Date
说明是个CGI脚本是因为这里面有个cgi-bin的路径. 在许多服务器cgi-bin是仅能够放置CGI脚本 的目录.

当你选择这个连接时, 你的浏览器将向服务器提出请求. 服务器接收这个请求计算出URL处的脚本文件名然后执行这个脚本.

这个getdate脚本, 在UNIX系统中执行是这样的:

#!/bin/sh


echo Content-type: text/plain


echo


/bin/date
第一行是个特殊的命令,告诉UNIX系统这是个shell脚本; 真实的情况是从这行开始的下一行,这个脚本做两件事:它输出行Content-type: text/plain, 接着开始一个空行;第二, 它调用UNIX系统时间date程序, 这样输出日期和时间. 脚本执行后输出应该这样:
Content-type: text/plain


Tue Oct 25 16:15:57 EDT 1994
这个Content-type是什么东东?它是个特殊的编码,Web服务器用来告诉浏览器输出这个文本是什么类型的. 这与HTML中Content-type含义是一样的。

这样浏览器的输出就如图3.

 


这是最基本的,实际情况要复杂得多,总之可以用来理解浏览器、服务器和脚本之间是怎样工作的。


我能用CGI脚本吗?

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


肯定吗?就是做不到,学学也可以?好吧!让我们继续.


你的服务器配置允许CGI脚本吗?

为了能写和运行CGI脚本, 你需要一个Web服务器. 不象通常的HTML文件, 你不能在本地系统上写或试验你的CGI脚本; 你得通过Web服务器来做这个.

但是即使你有一个Web服务器, 这个服务器必须特别地为运行CGI脚本配置一下. 那意味着你所有的脚本必须放置在一个叫做cgi-bin的目录下.

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

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

  • 每个脚本是个程序, 它运行在浏览器可以请求的系统上, 执行时使用CPU时间和内存. 如果有成打上千的这些脚本同时运行,会怎样?你的系统将不忍负载直至崩溃。
  • 如果你不仔细地编写你的CGI脚本, 你将有可能让别人通过你的CGI脚本参数进入伤害你的系统.


阅读(1346) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~