Art*_*cto 24
我们可以在三种情况下分割表格提交:
application/x-www-form-urlencoded
multipart/form-data
在情况1和3中,$HTTP_RAW_POST_DATA
包含原始发布数据(除非选项always_populate_raw_post_data
设置为false
,在这种情况下$HTTP_RAW_POST_DATA
,在情况1中为空),即数据与客户端(通常是浏览器)发送的完全相同.在1的情况下,数据具有诸如的形式
key1=value1&key2=value2&key3[]=value3.1&key3[]=value3.2
Run Code Online (Sandbox Code Playgroud)
PHP自动解析这个,所以$_POST
变成:
$_POST = array(
"key1" => "value1",
"key2" => "value2",
"key3" => array("value3.1", "value3.2");
)
Run Code Online (Sandbox Code Playgroud)
php://input
即使在always_populate_raw_post_data
设置为1的情况下,原始数据的内容也可以通过访问false
.特别是,file_get_contents("php://input")
给出相同的数据$HTTP_RAW_POST_DATA
已经或将要有.
在POST 3数据是任意的情况3中,$_POST
将是一个空数组并且$HTTP_RAW_POST_DATA
将始终填充.
案例2是一个特殊的案例.在这种情况下,PHP将解析数据,并$_POST
会得到未上传的文件中的字段的内容,但php://input
和$HTTP_RAW_POST_DATA
将不可用.
$HTTP_RAW_POST_DATA
将包含以下内容:
beans=cheese&spam=eggs&one=two
Run Code Online (Sandbox Code Playgroud)
PHP会为你拆分它,然后把它推到$_POST
数组中.天真地,它做了这样的事情:
$parts = explode('&', $HTTP_RAW_POST_DATA);
foreach ( $parts as $part ) {
list($key, $value) = explode('=', $part, 2);
$_POST[$key] = $value;
}
Run Code Online (Sandbox Code Playgroud)
使用可嵌入HTML的JavaScript,您可以使用AJAX发布任何您喜欢的内容.像这样的东西:
var req = new XMLHttpRequest();
req.open('POST', 'http://www.example.com/my_url' true);
req.send('any data you want');
Run Code Online (Sandbox Code Playgroud)
将允许您将任意内容POST到Web服务器.
归档时间: |
|
查看次数: |
14061 次 |
最近记录: |