手机版 | 登陆 | 注册 | 投稿 | 反馈留言 | 设首页 | 加收藏
网站首页 > 后端开发 > cgi > cgi基础 >处理表单的脚本

处理表单的脚本

时间:2020-02-18    点击: 次    发布者:佚名 - 小 + 大

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

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

 

表单形式和表单脚本

  正如上面所说,由于表单有两个部分. 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,你会丢失很多数据.

如果你用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目录下.

上一篇:CGI变量

下一篇:表单输入的解码程序



Copyright © 2020 天人系列管理系统 版权所有,授权www.rjc.wang使用  Powered by 55TR.COM 运行代码测试页
锐教程网站www.rjc.wang由天天科技荣誉出品