我可以在没有';的情况下访问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