不错的一篇学习CGI脚本(脚本)

2019-10-01 15:43:31于海丽

这是个很简单的例子, 他能这样备调用:
<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目录,那没用的。

这个例子完整的脚本如下:

#!/bin/sh

echo "Content-type: text/html"


echo

echo "<HTML><HEAD>"

echo "<TITLE>Is Laura There?</TITLE>"

echo "</HEAD><BODY>"

ison='who | grep lemay'

if [ ! -z "$ison" ]; then

        echo "<P>Laura is logged in"

else

        echo "<P>Laura isn't logged in"

fi

echo "</BODY></HTML>"

带有参数的脚本

为了传递一个参数给脚本,可以在URL中使用 (?) 插入脚本名词和参数之间, 用加号(+) 表示每个单一的参数, 如:
<A HREF="/cgi-bin/myscript?arg1+arg2+arg3">run my script</A>
当服务器接收到这个请求,它传递 arg1, arg2, 和 arg3 参数给脚本. 你然后能在脚本中使用这些参数.

这个方法有时叫查询, 因为早期它用在搜索功能中.

练习2: 检查是否有人登陆.
既然你知道怎样使用参数,让我们继续上面的例子pinglaura,通过修改这个例子我们得到下面这个脚本pinggeneric.

我们取个不同题目:

#!/bin/sh


echo "Content-type: text/html"


echo


echo "<HTML><HEAD>"


echo "<TITLE>Are You There?</TITLE>"


echo "</HEAD><BODY>"