说有一个表格:
<form enctype="multipart/form-data" method="post">
<input name='foo'>
<input name='foo'>
<input type=submit>
</form>
Run Code Online (Sandbox Code Playgroud)
发布到我的PHP脚本.如何(如果有的话)我可以找到这些框中提交的两个值.$_POST['foo']给出第二个值,但我想要两个.
我意识到这可以通过使用<input name='foo[]'>(这会产生$_POST['foo']一个数组)来完成.由于某些编码决定,添加方括号是不可取的(读:需要一些重组),似乎应该有一个简单的方法来做到这一点.
如果enctype是'application/x-www-form-urlencoded',那么解析它会很容易,但"multipart/form-data"更复杂,可能有30MB的文件!
更不用说PHP已经解析了帖子数据.
请有人告诉我,PHP保存了从$ _POST解析的信息,并且我可以在不重新解析的情况下访问它.
谢谢!
您无法访问它,$_POST也不会保留它.如果浏览器甚至发送它(它应该有),当$_POST从HTTP请求解析到超全局时,数组密钥将被覆盖.
它等同于定义一个数组,如:
array(
'one' => 1,
'two' => 2,
'one' => 3
);
Array(2) {
["one"]=>
int(3)
["two"]=>
int(2)
}
Run Code Online (Sandbox Code Playgroud)
one最初设置数组键,但是在初始化期间遇到另一个值时,会立即覆盖它.
如果您读入整个原始HTTP POST,则可能能够解析所需的值.
<?php $postdata = file_get_contents("php://input"); ?>
Run Code Online (Sandbox Code Playgroud)
这会给你一个字符串
foo=value1&foo=value2
Run Code Online (Sandbox Code Playgroud)
但是你无法传递它parse_str(),因为你将遇到相同的数组键覆盖问题.您必须执行字符串解析以提取其他值.
[]如果可能的话,将它们更改为数组确实更容易.
| 归档时间: |
|
| 查看次数: |
285 次 |
| 最近记录: |