php中有$_request与$_post、$_get用于接受表单数据,当时他们有何种区别,什么时候用那种最好。
一、$_request与$_post、$_get的区别和特点$_REQUEST[]具用$_POST[] $_GET[]的功能,但是$_REQUEST[]比较慢。通过post和get方法提交的所有数据都可以通过$_REQUEST数组获得
二、$_post、$_get的区别和特点
1. get是从服务器上获取数据,post是向服务器传送数据。
2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
3. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
4. get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
5. get安全性非常低,post安全性较高。
举例:mypage?id=1这种就是GET方式传值,可以用$_request和$_get接受传值。
补充一点,不要用$_REQUEST来取变量,因为这跟php.ini里的配置有关系
; This directive describes the order in which PHP registers GET, POST, Cookie, ; Environment and Built-in variables (G, P, C, E & S respectively, often ; referred to as EGPCS or GPC). Registration is done from left to right, newer ; values override older values.
variables_order = "EGPCS"如果同一个变量,既存在于get又存在于post,会取得get里的数据,因为我的G在P之前,EGPCS是个顺序,容易造成程序有漏洞
注意事项:
1.不要经常使用$_REQUEST,
2.如果不确定_GET/POST你接收数据时候,可以这样
view plain copyif($_SERVER['REQUEST_METHOD’]=="POST"){ $echo $_POST['名字']; }else if($_SERVER[’ REQUEST_METHOD’]=="GET"){ //用 _GET接收. }