ftp搜索引擎的设计和实现:5.1 CGI脚本(一)

来源:互联网 发布:tb程序化交易平台源码 编辑:程序博客网 时间:2024/06/08 06:13
 这一部分首先来介绍一下什么是cgi脚本。
       CGI 意思为 Common Gateway Interface, 一种基于浏览器的输入、在Web服务器上运行的程序方法. CGI脚本 使你的浏览器与用户能交互,为了在数据库中寻找一个名词, 提供你写入的评论,或者从一个表单中选择几个条目并且能得到一个明确的回答. 如果你曾经遇到过在web上填表或进行搜索, 你就是用的CGI脚本. 你那时也许没有意识到,因为大部分工作是在服务器上运行的,你看到的只是结果.
      CGI脚本简单地讲是个运行在Web服务器上的程序, 由浏览器的输入触发。这个脚本通常象服务器和系统中其他程序如数据库的桥梁。
      CGI 脚本难道不是一个真正的脚本?按照你的服务器的支持, 他们可能是一个编译好的程序或者批命令文件或者其他可执行的东西。为了简单起见,我们统称他们为脚本scripts.
       CGI脚本是用下列两种方法使用的: 作为一个表单的ACTION 或 作为一个页中的直接link。一个URL指向一个CGI脚本。一个CGI脚本的URL能如普通的URL一样在任何地方出现。

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

       下面来解析一个cgi脚本的实现:
       首先一个cgi脚本都有一个输出头部,这个头部实际不是文本的一部分,是服务器与浏览器之间的信息协议,你实际看不到。
有三个类型的头部: Content-type, Location, 和Status. Content-type 最普遍。有关content-type解释可以见有关HTML的说明, 一个你可以发出的特定编码象这样:
Content-type: text/html
       在这个例子中,输出数据的类型是text/html; 换句话说, 他是个HTML文件.

通用格式和content-types.   

Format

Content-Type

HTML

text/html

Text

text/plain

GIF

image/gif

JPEG

image/jpeg

PostScript

Application/postscript

MPEG

video/mpeg

       注意content-type 后面必须跟一个空行. 如果你没有空行,服务器将无法搞清这个头部在哪里结束。
       如果你的cgi脚本是C语言写的,通常是这样开头的:
printf("Content-type:text/html\n\n");

       如果是个bash shell,则开头是:
#!/bin/sh
echo Content-type: text/plain
echo


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

       一个最简单的cgi脚本例子:
#!/bin/sh
echo Content-type: text/plain
echo
/bin/date

       把该脚本命名为getdate,放在web服务器的cgi-bin目录。假设web服务器的域名是weichao.3322.org,当你在浏览器中输入
http://weichao.3322.org/cgi-bin/getdate
       你在浏览器里得到类似下面的输出:
Wed Apr     4 22:33:31 CST 2007

       下节来介绍怎么跟cgi脚本交互。

百度Hi 文件搜索引擎研究群: 1181045

原创粉丝点击