PHP表单处理
form表单的提交主要有两[文]种方式:get和post
GET方法接收的特点:所有[章]输入的数据被加载到请求的U[来]RL地址后面,数据通过键/[自]值对的方法加载。
GET方法接收的特点:把数[红]据和请求的URL地址放在一[色]起,浏览的结果放在缓存区内[火]。由于GET放在URL后面[线]传递,所以传递的数据大小有[自]限。
实例:next.php?u[媒]ser=admin&[体];pwd=123456
数据传递到next.php[博]页,?表示参数的开始,&a[客]mp;分隔不同的参数,+表[文]示空格符。在页面next.[章]php中,用$_GET[][来]数组形式接收传递的数据。用[自]$_GET[user]接收[红]到admin值,用$GET[色]['pwd'[火];]接收到数据123456[线].
使用POST方法,把表单数[自]据打包放入请求中,服务器必[媒]须从输入的文件中读出请求的[体]信息,分析出数据的键值,提[博]取出数据。
用POST发送的数据单独存[客]放在包中,不跟随URL地址[文],所以允许发送大量数据,但[章]是客户端每次都会向服务器发[来]送请求,不会存放在缓存区内[自]。可以使用$_POST[][红]接收POST的数据。在UR[色]L中,不会显示数据信息。
表单的复选框控件name属[火]性可以设置成一个名字后加[[线] ]表示是一个数组,提交后可[自]以接收得到相应的选中值。
也可以使用$_REQUES[媒]T[]接收传递的值,无论是[体]get方法还是post方法[博]传递的。虽然$_REQUE[客]ST[]具用$_POST[[文]] $_GET[]的功能,但是[章]$_REQUEST[]比较[来]慢。。
$_POST、$_GET的[自]区别和特点
1. GET是从服务[红]器上获取数据,POST是向[色]服务器传送数据。
2. GET是把参数[火]数据队列加到提交表单的AC[线]TION属性所指的URL中[自],值和表单内各个字段一一对[媒]应,在URL中可以看到。P[体]OST是通过HTTP POST机制,将表单内各个[博]字段与其内容放置在HTML[客] HEADER内一起传送到A[文]CTION属性所指的URL[章]地址。用户看不到这个过程。[来]
3. 对于GET方式[自]提交表单数据,服务器端用$[红]_GET[‘name’]获[色]取变量的值,对于POST方[火]式提交表单数据,服务器端用[线]$_POST[‘name’[自]]获取提交的数据,当然,两[媒]者都可以通过$_REQUE[体]ST[‘name’]获得表[博]单数据。对于REQUEST[客]方式提交表单数据,服务器端[文]用$_REQUEST[‘n[章]ame’]获取变量的值,但[来]这种方式很少用。
4. GET传送的数[自]据量较小,不能大于2KB。[红]POST传送的数据量较大,[色]一般被默认为不受限制。但理[火]论上,一般认为不能超过10[线]0KB。
5. GET安全性非[自]常低,POST安全性较高。[媒]
6. GET表单值可[体]以通过_GET获取;但通过[博]action的url设置的[客]参数总是获取不到的,<[文];form method="[章]get" action="[来]a.asp?b=b&quo[自]t;>跟是一[自]样的,也就是说,在这种情况[媒]下,GET方式会忽略act[体]ion页面后边带的参数列表[博]。POST表单值可以通过_[客]POST获取;但通过act[文]ion的url参数设置的参[章]数则可以不能通过_POST[来]获取到。action=te[自]st.php?id=1这种[红]就是GET方式传值,可以用[色]$_REQUEST和$_G[火]ET接受传值,但不能用PO[线]ST方式获取到值,即使表单[自]是POST方式提交。所在,[媒]在提交表单时,如果acti[体]on中同时有参数,最好只能[博]通过POST表单方式,对于[客]表单内数据,直接通过POS[文]T获取,对于action中[章]参数,童工GET获取。
在做数据查询时,建议用GE[来]T方式,而在做数据添加、修[自]改或删除时,建议用POST[红]方式。
request是先读取 get再读post 的, 同时存在, 即覆盖掉前面的变量。
经典实例:
echo "get\n&q[色]uot;;
print_r($_GET[火]);
echo "post\n&[线]quot;;
print_r($_POS[自]T);
echo "request[媒]\n";
print_r($_REQ[体]UEST);
?>