我可以在没有';的情况下访问PHP中的重复post变量吗;[]和#x27;以他的名义?
假设有一个表单:我可以在没有';的情况下访问PHP中的重复post变量吗;[]和#x27;以他的名义?,php,post,Php,Post,假设有一个表单: <form enctype="multipart/form-data" method="post"> <input name='foo'> <input name='foo'> <input type=submit> </form> 发布到我的php脚本。如何(如果有的话)找到这些框中提交的两个值$\u POST['foo']给出了第二个值,但我想要两者 我意识到这可以通过使用(这将使$\
<form enctype="multipart/form-data" method="post">
<input name='foo'>
<input name='foo'>
<input type=submit>
</form>
发布到我的php脚本。如何(如果有的话)找到这些框中提交的两个值$\u POST['foo']
给出了第二个值,但我想要两者
我意识到这可以通过使用
(这将使$\u POST['foo']
成为一个数组)来实现。由于某些编码决策,添加方括号是不可取的(读:将需要一些重构),似乎应该有一种简单的方法来做到这一点
如果enctype是“application/x-www-form-urlencoded”,那么解析它会很容易,但“multipart/form data”更复杂,可能包含一个30MB的文件
更不用说PHP已经解析了post数据
请有人告诉我,PHP保留了它从$\u POST解析的信息,我可以访问它而无需重新解析
谢谢 您无法访问它,
$\u POST
也不会保留它。如果浏览器甚至发送了它(它应该有),那么当数组键从HTTP请求解析为$\u POST
超全局时,它将被覆盖
这相当于定义一个数组,如:
array(
'one' => 1,
'two' => 2,
'one' => 3
);
Array(2) {
["one"]=>
int(3)
["two"]=>
int(2)
}
最初设置数组键one
,但在初始化过程中遇到另一个值时,它会立即被覆盖
不适合您的情况(多部分形式),但适用于未来的读者:
如果您阅读了整个原始HTTP文章,您可能能够解析出所需的值
<?php $postdata = file_get_contents("php://input"); ?>
但是,您不能将其传递给parse_str()
,因为您将遇到相同的数组键覆盖问题。您必须进行字符串解析才能提取出另一个值
如果可能的话,将它们更改为带有
[]
的数组确实更容易。您可以将它们命名为foo和foo2,这样您就可以同时发送这两个名称。当然,实现foo[]?@Sam152只需要一点额外的逻辑就可以了,但是有一个完整的系统可以生成html表单元素并将它们与发布的数据进行匹配。除了像这样的小问题,这些都没问题。一个快速的n肮脏的黑客可以做到这一点,但我宁愿正确地做它(这需要时间)。@mikevoermans我们还需要处理
,所以这不能解决整个问题。这就是我假设PHP正在做的,但我希望它有一个更复杂的方法,可以保留它注入$_POST的所有数据。@DaedalusFall可能从原始HTTP POST读取它。更新后:这是我的第一次,但正如问题中所述,它的多部分/表单数据经过编码,因此看起来不像foo=value1&foo=value2
,由于存在实际形式的文件输入,我们可以解析兆字节的数据。当然是可行的,但很烦人(而且肯定比“[]”要多)。如果不是整天都无法访问,这可能会更容易:)。
foo=value1&foo=value2