当前位置: 首页 > 图文教程 > 网络编程 > PHP > 深入研究表单提交方式:GET/POST

PHP
php ignore_user_abort与register_shutdown_function 使用方法
PHP写MySQL数据 实现代码
phpmyadmin 访问被拒绝的真实原因
PHP 程序员也要学会使用“异常”
php MYSQL 数据备份类
PHP 类型转换函数intval
php 图像函数大举例(非原创)
PHP 输出缓存详解
PHP COOKIE设置为浏览器进程
ie6 动态缩略图不显示的原因
php 将bmp图片转为jpg等其他任意格式的图片
discuz7 phpMysql操作类
一个php Mysql类 可以参考学习熟悉下
php 分页函数multi() discuz
学习discuz php 引入文件的方法DISCUZ_ROOT
php fckeditor 调用的函数
mysql 性能的检查和优化方法
PHP 高级课程笔记 面向对象
PHP 多进程 解决难题
php 404错误页面实现代码

PHP 中的 深入研究表单提交方式:GET/POST


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 184 ::
收藏到网摘: n/a

大家知道目前表单提交的方式有GET和POST。我在这里不多说什么,给大家看一个以GET方式提交的表单的请求: 

GET /cgi-bin/tech/method.cgi?GET=GET HTTP/1.1 
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */* 
Referer: ::URL::http://localhost//other.html  
Accept-Language: zh-cn 
Accept-Encoding: gzip, deflate 
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0) 
Host: localhost:8080 
Connection: Keep-Alive 

  这个请求是我们通过这个HTML代码发出的: 

<form action="::URL::http://localhost:8080/cgi-bin/tech/method.cgi"  method="GET"> 
<input type="text" size="10" value="GET" name="GET"> 
<input type=submit value="GET方式"> 
</form> 

  这个请求已经超出了我们研究的范围,我们只研究其中的第一行。其中,第一个"GET"说出了提交的方式,是以GET方式提交的;中间的就是提交给服务器上哪个程序,前面一部分"/cgi-bin/tech/method.cgi"就是我们HTML的form中action的内容,而后面的"GET=GET"就是HTML的form中,input的内容:我们发现IE已经把这个表单的内容转换成特定格式了。在Perl中,通过$GET=$ENV{'QUERY_STRING'}获得以GET发送的数据。 

  我们再看一个以POST方式提交的表单的请求: 

POST /cgi-bin/tech/method.cgi HTTP/1.1 
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms- 
powerpoint, application/vnd.ms-excel, application/msword, */* 
Referer: ::URL::http://localhost//other.html  
Accept-Language: zh-cn 
Content-Type: application/x-www-form-urlencoded 
Accept-Encoding: gzip, deflate 
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0) 
Host: localhost:8080 
Content-Length: 9 
Connection: Keep-Alive 

POST=POST 

  同样给出HTML: 

<form action="::URL::http://localhost:8080/cgi-bin/tech/method.cgi"  method="POST"> 
<input type="text" size="10" value="POST" name="POST"> 
<input type=submit value="POST方式"> 
</form> 

  我们发现其中的数据跑到了最下面。在Perl中,通过read(STDIN,$POST,$ENV{'CONTENT_LENGTH'})获得以POST发送的数据。我记得GET发送数据最多只能1024字节,而POST好像很大很大! 

  思考:如果我有这么一段HTML代码,它将会出现什么问题呢? 

<form action="::URL::http://localhost:8080/cgi-bin/tech/method.cgi?GET=GET"  method="POST"> 
<input type="text" size="10" value="POST" name="POST"> 
<input type=submit value="GET/POST方式"> 
</form> 

  这个代码在很多程序上可能用到过,但是大多数人不会好好的想一想,究竟哪些内容是以GET发送的,哪些内容是以POST发送的。我们看看它的请求是什么: 

POST /cgi-bin/tech/meth