5

不久前,我问了一个关于在一个页面中多次使用相同的输入名称/隐藏名称的问题,并得到一个不起作用的答案,因为它表明我必须使用在字段名称后面加上括号,例如partno[].

我不能在我的表单中使用它,因为它被发送到的购物车只能识别某些字段名称,例如:partno、item、price、qty 等(我不能使用partno[], item[]等)所以我真的需要能够得到每个相同字段名称的所有值都使用了多次。当我使用该方法GET时,它将显示地址栏中使用的每个字段名称的所有值。你可以试试这个并提交表格。查看地址栏中的网址。

我的新问题是:PHP 中有没有办法捕获使用该POST方法传递的所有信息?(就像上面示例中地址栏中显示的内容,但使用POST, not GET)。如果我能找到捕获它的方法,我可以解析它。

谢谢,凯利

4

5 回答 5

2

您只需使用$_POST而不是$_GET.

因此,如果您通过以下方式使用 get :

?something=somevalue

并且正在捕捉它$_GET['something'],您现在将使用$_POST['something'].

于 2012-07-12T20:32:27.277 回答
2

您可以直接从输入流中获取未污染的数据:

file_get_contents('php://input');

所以如果你有这样的事情:

<input name="type" value="val1">
<input name="type" value="val2">
<input name="type" value="val3">

你会得到一个这样的字符串:

type=val1&type=val2&type=val3

然后,您可以将此字符串解析为一个数组并创建您自己的“原始帖子数据”。

http://php.net/manual/en/wrappers.php.php

php://input 是一个只读流,允许您从请求正文中读取原始数据。对于 POST 请求,最好使用 php://input 而不是 $HTTP_RAW_POST_DATA,因为它不依赖于特殊的 php.ini 指令。此外,对于那些默认情况下不填充 $HTTP_RAW_POST_DATA 的情况,与激活 always_populate_raw_post_data 相比,它可能是一种内存密集度较低的替代方案。php://input 不适用于 enctype="multipart/form-data"。

于 2012-07-12T20:38:54.787 回答
1

由于 PHP 中的 POST 只不过是一个数组,因此只需对其进行迭代。

foreach($_POST as $k => $v) {
   echo($k . ': '. $v . '<br>');
}
于 2012-07-12T20:32:31.187 回答
0

如果您想查看所有 $_POST 发送的内容,请使用 var_dump($_POST) 或 echo print_r($_POST)。这将向您显示所有字段名称和数据,即使字段名称包含数组,例如您的 partno[]。

于 2012-07-12T20:59:18.043 回答
-1

无法发布与字符串同名的 2 个输入。您应该修改购物车以将数组转换为字符串。

如果您使用的是 GET,您可以查看parse_url () 函数。

于 2012-07-12T20:35:16.197 回答