PHP中有没有一种方法可以捕获使用POST方法传递的所有信息


Is there a way in PHP to capture ALL the information passed using the POST method

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

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

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

谢谢,Kelly

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

因此,如果你使用get的方式如下:

?something=somevalue

如果用$_GET['something']捕捉,现在就用$_POST['something']

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

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_popuple_raw_post_data。php://input不适用于enctype=";多部分/形式数据";。

由于PHP中的POST只不过是一个数组,所以只需对其进行迭代即可。

foreach($_POST as $k => $v) {
   echo($k . ': '. $v . '<br>');
}

如果您想查看所有$_POST都在发送什么,请选择var_dump($_POST)或echo print_r($-POST)。这将显示所有字段名称和数据,即使字段名称包含数组,如partno[]。

无法POST与字符串名称相同的2个输入。您应该将cart-to-convent数组修改为字符串。

如果您正在使用GET,您可以检查parse_url()函数。