菜单

input有什么不同

2019年8月4日 - 4166am金沙下载

Mac Pro 计算机编译安装了 PHP 5.6.21,先前的连串运行时报如下警告级错误:
Deprecated: Automatically populating $HTTP_RAW_POST_DATA is
deprecated and will be removed in a future version. To avoid this
warning set ‘always_populate_raw_post_data’ to ‘-1’ in php.ini and
use the php://input stream instead.

1、HTML <form> enctype Attribute

For example, the key-value
pairs

name: Jonathan Doe
age: 23
formula: a + b == 13%!

are encoded as the
following raw data:

name=Jonathan+Doe&age=23&formula=a+%2B+b+%3D%3D+13%25%21

$_POST

Array
(
    [name] => Jonathan Doe
    [age] => 23
    [formula] => a + b == 13%!
)

$HTTP_RAW_POST_DATA

print_r($GLOBALS['HTTP_RAW_POST_DATA'] );
name=Jonathan+Doe&age=23&formula=a+%2B+b+%3D%3D+13%25%21

php://input

$post_data = file_get_contents('php://input');
print_r($post_data);

name=Jonathan+Doe&age=23&formula=a+%2B+b+%3D%3D+13%25%21

HTML <form< 标签的 enctype 属性

野趣是 自动变量 $HTTP_RAW_POST_DATA 已不适合时机,现在会被移除,使用
php://input 流格局替代!
 
 
总结:区别 PHP 的 $_POST、$HTTP_RAW_POST_DATA 和 php://input
 
1、HTML <form> enctype Attribute

2、$_POST

$_POST是最常用的获取表单的点子,它是以涉及数组格局协会提交的数额,并对此打开编码处理,如urldecode,以致编码转变,识别的数据类型是PHP暗中同意知别的数据类型
application/x-www.form-urlencoded

不可能深入分析如text/xml,application/json等非
application/x-www.form-urlencoded 数据类型的剧情

率先来打探什么是 <form< 标签的 enctype 属性,enctype
属性规定了在发送到服务器以前应当如何对表单数据开始展览编码,有三体系型:

application/x-www-form-urlencoded 
传送从前全体的字符都会被encoded,(spaces
被退换为+、特殊字符被调换为ASCII HEX)

3、$HTTP_RAW_POST_DATA

PHP默许知别的数据类型是application/x-www.form-urlencoded,用Content-Type=application/json
类型,提交的POST数据这时候 $_POST 就不可能获得到了,可是利用
$GLOBALS[‘HTTP_RAW_POST_DATA’]
能够获得到。因为在PHP无法分辨Content-Type的时候,就能把 POST 数据填充到
$HTTP_RAW_POST_DATA 中。

属性值 描述
application/x-www-form-urlencoded 暗中同意方式,在发送到服务器以前,全体字符都会开始展览编码(空格转变为
“+” 加号,特殊符号调换为 ASCII HEX 值)
multipart/form-data 不对字符编码,在接纳含有文本上传控件的表单时,必须利用该值。
text/plain 空格调换为 “+” 加号,但不对特种字符编码。
当在网页提交了三个表单之后,可以行使三种 PHP 格局来赢得 Post
数据:$_POST,$HTTP_RAW_POST_DATA,and php://input,有怎么着界别吧?

multipart/form-data  未有字符被encoded,一般用upload
text/plain Spaces被撤换为 + ,可是特殊字符不会被encoded
For example, the key-value pairs
name: Jonathan Doe
age: 23
formula: a + b == 13%!
are encoded as the following raw data:
name=Jonathan+Doe&age=23&formula=a+%2B+b+%3D%3D+13%25%21

4、php://input

php://input
可经过输入流以文件读取格局赚取未经管理的POST原始数据,允许读取 POST
的原来数据。和 $HTTP_RAW_POST_DATA
比起来,它给内部存款和储蓄器带来的压力比较小。

 

总结

1、如果是 multipart/form-data
 和 application/x-www-form-urlencoded 格式 用 $_POST

2、若是不可能收获的时候举个例子 application/json
使用 file_get_contents(‘php://input’)

 

$_POST

$_POST

$_POST 是获得表单 POST
过来数据(body部分)的最常用方法,上传的公文音讯运用 $_FILES 获取。

Array

$HTTP_RAW_POST_DATA

(

当浏览器从表单发送 POST 要求的时候,暗中认可的 media type 是
“application/x-www-form-urlencoded”,意思正是字段名和值都编码了,每个key-value 对运用 ‘&’ 字符分隔离,key 和 value 使用 ‘=’ 分开,而且 key 和
value 中的空格都会被替换来 + ,其余特殊字符都会被选拔 urlencode
格局进行编码。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图