gpt4 book ai didi

php - 我可以在名称中没有 '[]' 的情况下在 PHP 中访问重复的 post 变量吗?

转载 作者:可可西里 更新时间:2023-11-01 00:49:46 26 4
gpt4 key购买 nike

假设有一个表单:

<form enctype="multipart/form-data" method="post">
<input name='foo'>
<input name='foo'>
<input type=submit>
</form>

发布到我的 php 脚本。我如何(如果有的话)找出这些框中提交的两个值。 $_POST['foo']给出第二个值,但我两个都想要。

我意识到这可以通过使用 <input name='foo[]'> 来完成(这将使 $_POST['foo'] 成为一个数组)。由于某些编码决定,添加方括号是不可取的(阅读:需要进行一些重组),而且似乎应该有一种简单的方法来做到这一点。

如果 enctype 是“application/x-www-form-urlencoded”,那么解析它会很容易,但是“multipart/form-data”更复杂,可能有一个 30MB 的文件!

更何况 PHP 已经解析了 post 数据。

有人能告诉我 PHP 保留了它从 $_POST 解析的信息,并且我可以访问它而无需重新解析。

谢谢!

最佳答案

您无法访问它,$_POST 也不会保留它。如果浏览器甚至发送了它(它应该有),当它从 HTTP 请求解析为 $_POST 超全局时,数组键将被覆盖。

这有点等同于定义一个数组:

array(
'one' => 1,
'two' => 2,
'one' => 3
);

Array(2) {
["one"]=>
int(3)
["two"]=>
int(2)
}

初始设置数组键one,但在初始化过程中遇到另一个值时,立即覆盖。

不适合您的情况(多部分形式)但适用于 future 的读者:

如果您阅读整个原始 HTTP POST,您可能能够解析出您需要的值。

<?php $postdata = file_get_contents("php://input"); ?> 

这会给你一个像这样的字符串

 foo=value1&foo=value2

但是您不能将它传递给 parse_str(),因为您会遇到相同的数组键覆盖问题。您必须进行字符串解析才能提取其他值。

如果可能的话,使用 [] 将它们更改为数组确实更容易。

关于php - 我可以在名称中没有 '[]' 的情况下在 PHP 中访问重复的 post 变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10090230/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com