百度空间 | 百度首页 
 
查看文章
 
ftp搜索引擎的设计和实现:5.1 CGI脚本(二)
2007-04-06 20:57

欢迎转载,但请注明出处,并给活力链接。谢谢

      有表单的网页通常需要跟服务器交互,比如你要把输入的用户名、密码、生日等提交,以便服务器处理。cgi脚本怎样获取用户的输入?
      为了传递一个参数给脚本,可以在URL中使用 (?) 插入脚本名词和参数之间。
    
      表单从浏览器发给服务器有两种方法。GET 和 POST。
      GET方法将数据打包放置在环境变量QUERY_STRING中作为URL整体的一部分传递给服务器。
      POST做很多类似GET同样的事情, 不同的地方就是它是分离地传递数据给脚本. 你的脚本通过标准输入获取这些数据. (有些Web服务器是存储在临时文件中.) 这个QUERY_STRING环境变量将不再设置。
      那你用那个方法呢? POST是个安全的方法, 尤其如果你的表单中有很多数据的话. 当你用GET, 这个服务器就分配变量QUERY_STRING给所有的表单数据, 但是这个变量可存储量是有限的. 换句话说,如果你有很多数据但是你又用GET,你会丢失很多数据.
      如果你用POST, 你可以尽可能多地使用数据, 因为这些数据从来也不分配到一个变量里.

      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编码传递给你的脚本的,在你用这些参数之前必须解码。

      看看这个url:
http://iseftp.2288.org:52080/cgi-bin/snapshot?url=0day.happy98.org/

      它指示脚本名称为snapshot,第一个变量是url,值为0day.happy98.org/

      查看src/search/queryentry.cpp里的getQueryCondition()函数,该函数用于search程序解析浏览器的输入。


类别:ftp搜索引擎 | 添加到搜藏 | 浏览() | 评论 (3)
 
最近读者:
 
网友评论:
1
2007-05-09 14:10 | 回复
什么时候才能看到下一篇? 期待中。. 写的非常好!!强烈支持!!!
 
2
2007-09-09 20:02 | 回复
有很久没更新了哦,不过整个搜索引擎的核心部分已经说清楚了,就剩下php+数据库部分了吧,不知道ftp的index是怎么更新的,能不能做到实时性。
 
3
2007-11-10 22:13 | 回复
源代码无法下载阿。
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu