总体导航图
学习指南
主要内容
网页制作软件
当前位置:多媒体应用基础 >> 网络多媒体应用设计 >> 解剖一个CGI脚本

解剖一个CGI脚本

输出头部
  虽然CGI脚本可以让你做任何事情,但是脚本的输出还是必须有一个规定形式。这个“脚本输出”意思是指你的脚本发回服务器的数据。这个头部是实际不是文本的一部分,是服务器与浏览器之间的信息协议,你实际看不到。 有三个类型的头部: Content-type、Location和Status, Content-type是最普遍的。
    有关content-type的解释可以见有关HTML的说明,一个你可以发出的特定编码像这样:     
     Content-type: text/html
    在这个例子中,输出数据的类型是text/html;换句话说,他是个HTML文件。

    表1  通用格式和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后面必须跟一个空行。如果你没有空行,服务器将无法搞清这个头部在哪里结束。

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

    这是个简单的输出日期的简单脚本,这个CGI脚本还检查看看我是否已经登陆到我的Web服务器,并且报告发现了什么(如图)。


    这是个很简单的例子, 他能这样备调用:
<A HREF="http://www.popchina.com/cgi-bin/pinglaura">Is Laura Logged in?</A>
这是没有输入的脚本,它只运行并且返回数据.
#!/bin/sh
echo Content-type: text/html
echo "<HTML><HEAD>"
echo "<TITLE>Is Laura There?</TITLE>"
echo "</HEAD><BODY>"
    为了测试我是否已经登陆系统,用who命令(我的登陆名假设为lemay),储存结果在变量ison中。如果我登陆,变量ison将有些内容,否则则是空的。
ison='who | grep lemay'
    试验结果及返回相应提示的脚本是这样:
if [ ! -z "$ison" ]; then
echo "<P>Laura is logged in."</P>
else
echo "<P>Laura isn't logged in."</P>
fi
    最后关闭HTML:
echo "</BODY></HTML>"
    现在你通过从命令行运行他,测试一下,你将得到一个结果说我未登陆你的系统,当然不可能的,他的输出是这样的:
Content-type: text/html
<HTML><HEAD>
<TITLE>Are You There?</TITLE>
</HEAD><BODY>
<P>Laura is not logged in.
</BODY></HTML>
    这是输出的一个HTML文本,这样你的浏览器能正常显示他,因为他是个HTML文件。现在将他copy到你的服务器的cgi-bin目录下,去执行,如果你不能达到CGI-bin目录,你必须询问你的服务器管理者,你不能理所当然地自己建立个CGI-bin目录,那没用的。

    

相关知识点
CGI学习
CGI精品下载