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

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

指向这个文件的路径可以是一个URL或相对路径. 所有相对路径是指相对于脚本所在的位置. 例子中的final.html文本是在当前上一个目录下docs的目录下:

echo Location: ../docs/final.html


echo

你不能Content-type 和 Location两个输出同时使用. 比如, 如果你想输出一个标准页,但是想在这个页尾加上客户的内容, 你就得用Content-type自行组建这两个部分. 注意:你可以用脚本命令打开一个当地文件作为数据直接将之输出.

No Response

有时对于一个CGI脚本也许一点没有输出. 有时你只是要从用户那儿收集点信息. 你就不用再调用一个新文本, 也不用输出结果或打开一个存在的文件. 在浏览器上的屏幕还是那个样子.

很幸运, 这一切很容易. 你只要输出下面这个命令即可(后面跟一个空行):

echo Status: 204 No Response


echo
这个Status头部提供状态码给服务器(并且也给浏览器). 特别的204将传递给浏览器,如果能识别它,它将什么也不做.


 


尽管无响应是一个官方HTTP规定的一部分,但也并不是适合所有的浏览器,也许会产生奇怪的结果,那你要多试验试试看啦.

处理表单的脚本

今天,大多数CGI脚本是用来处理表单输入的. 这个过程大致象上面说阐述的一样,但还是有些不同,比如CGI脚本只要被调用;数据怎样从服务器被发向浏览器.

记住, 大多数表单有两个部分: HTML的表单格式;处理表单数据的CGI脚本. 这个CGI脚本使用标签<FORM>属性调用的.

表单形式和表单脚本

正如上面所说,由于表单有两个部分. 如下:

这个ACTION属性包含着处理表单的脚本:

<FORM ACTION="http://www.popchina.com/cgi-bin/processorscript">
在这个表单中, 每个输入区都有一个NAME的属性, 用来称呼表单元素. 当这个表单数据被递交给你在ACTION中定义的CGI脚本, 这样这些name和输入内容被作为一个数字或字符传递给脚本.

GET 和 POST

表单从浏览器发给服务器有两种方法.  GET 和 POST.

我们上面谈论的方法,实际是GET,它将数据打包放置在环境变量QUERY_STRING中作为URL整体的一部分传递给服务器。

POST做很多类似GET同样的事情, 不同的地方就是它是分离地传递数据给脚本. 你的脚本通过标准输入获取这些数据. (有些Web服务器是存储在临时文件中.) 这个QUERY_STRING环境变量将不再设置.

那你用那个方法呢? POST是个安全的方法, 尤其如果你的表单中有很多数据的话. 当你用GET, 这个服务器就分配变量QUERY_STRING给所有的表单数据, 但是这个变量可存储量是有限的. 换句话说,如果你有很多数据但是你又用GET,你会丢失很多数据.