php中的 $_GET 、$GLOBALS['HTTP_ROW_POST_DATA'] 、php://input 这三者的区别之处

来源:互联网 发布:淘宝大v达人怎么申请 编辑:程序博客网 时间:2024/06/08 17:25

明显,这三个都是为了获取通过http发送到服务器的数据。
php默认能识别的数据类型(MIME) 是application/x-www.form-urlencoded ,常见情况就是表单的提交,一般提交过来的数据都是形如 k1=v1&k2=v2&k3=v3...... 这种 form-urlencoded 。这种数据php会解析到 $_POST 中,也就是我们通常在提交表单操作中使用到的那样。但是当用户post过来的数据是 xml格式的字符串,php是不能这种数据类型解析到$_POST 数组中的,但这会在 $GLOBALS 里面存储post过来的原始数据的,就是 $GLOBALS['HTTP_ROW_POST_DATA'] ,其实 $_POST 中的数据也就是从这个数组里面分析出来填充到 $_POST 的(若无法识别为 urlencoded,则为空)。
也就是说当我们想要接收 xml 格式的post数据就只能用$GLOBALS['HTTP_ROW_POST_DATA'] 了。当然还有一个 php://input , 这个是IO stream的协议,php会解析这个协议为post过来的元素数据 也就是说 file_get_contents('php://input') = $GLOBALS['HTTP_ROW_POST_DATA']

但是当我们post二进制文件到服务器的话,这些是都不能识别的, 比如 enctype='multipart/form-data' 这种 MIME ,php给我们提供了 $_FILES 数组来获取这种数据的信息。

先在CSDN支持MarkDown,很好啊!

0 0
原创粉丝点击