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

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

如果你用POST, 你可以尽可能多地使用数据, 因为这些数据从来也不分配到一个变量里.

URL 编码

URL 编码是一种浏览器用来打包表单输入的格式. 浏览器从表单中获取所有的name和其中的值,将他们作为name/value参数编码, 移去那些不能传送的字符, 将数据排行等等,这些还取决于你用GET还是POST?作为URL的一部分或者分离地发给服务器. 不管哪种情况, 在服务器端的表单输入格式样子象这样:
theName=Ichabod+Crane&gender=male&status=missing&headless=yes
URL编码遵循下列规则: 每对name/value由&符分开. 每对来自表单的name/value由=符分开. 如果用户没有输入值给这个name,那么这个name还是出现,只是无值(象这样 "name="). 任何特殊的字符(就是那些不是简单的七位ASCII,如汉字) 将以百分符%用十六进制编码. 当然也包括象 =, &, 和 % 这些特殊的字符. 在输入区中的空格将以加号+显示. 因为表单输入是用这个URL编码传递给你的脚本的,在你用这些参数之前必须解码,因为解码是个很普遍的工作,可以有很多工具做这个工作 . 你没有必要自己写这个解码程序.

这里介绍一个叫uncgi的解码程序, 你可以从http://www.hyperion.com/~koreth/uncgi.html. 得到原码,安装在你自己的cgi-bin目录下.

练习3: 告诉我你的名字.
让我们以这个例子来说明,如图5.

图5. 告诉我你的名字的表单.

这个输入被发给脚本, 然后发回显示一个hello的信息(间图.6).

如果你在姓名输入处不输入任何东东,会怎样?见图7.

图6. 姓名表单的结果.

图7. 另一个结果.

修改表单的HTML
现在我们举一个真实的例子:
<FORM METHOD=POST ACTION="../cgi-bin/form-name">


</FORM>
如果你在用uncgi从input中解码, 情况有点不同. 为了是uncgi正常工作, 你首先必须调用uncgi , 如果uncgi是个目录,加上实际的脚本名, 象这样:
<FORM METHOD=POST ACTION="../cgi-bin/uncgi/form-name">


</FORM>
这样,你不必修改表单中原始的HTML; 原始的HTML可以工作得很好.
脚本
处理表单输入的是个CGI脚本, 让我们来仔细地看看。

在脚本中第一步是解码,在这个例子中, 我们已经使用uncgi解码输入数据, 实际这个表单已经为你做好解码. 通过建立一个uncgi的目录,一旦表单递交给服务器,服务器会自动进行解码,这样,所有的name/value已经准备就绪等待你的使用.

现在,一个例子开始部分假设是下面这样:

echo Content-type: text/html


echo


echo "<HTML><HEAD>"


echo "<TITLE>Hello</TITLE>"


echo "</HEAD><BODY>"


echo "<P>"
接下来,有两种情况要处理:一件是处理用户不输入名字的情况,一个是如果输入了向他们说hello.