PHP:可以自动获取所有POSTed数据吗?

时间:2011-06-13 18:52:32

标签: php forms post

简单问题:即使您不知道所有字段,是否可以将所有数据发布到页面上?

例如,我想编写一个简单的脚本来收集任何POSTed数据并通过电子邮件发送它。我可以预见,随着时间的推移,表格中的字段可能会发生很大的变化,所以从长远来看,为了节省一些时间,我想知道我是否可以写一些自动收集的内容?

有可能吗?

8 个答案:

答案 0 :(得分:85)

不确定。只需浏览$_POST数组:

foreach ($_POST as $key => $value) {
    echo "Field ".htmlspecialchars($key)." is ".htmlspecialchars($value)."<br>";
}

答案 1 :(得分:32)

没有人提到原始发布数据,但很高兴知道,如果发布的数据没有密钥,只有值,请使用Raw Post Data

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

PHP Man:

  

php:// input是一个只读流,允许您读取原始数据   来自请求机构。在POST请求的情况下,它是可取的   使用php://输入而不是$ HTTP_RAW_POST_DATA,因为它没有   依赖于特殊的php.ini指令。而且,对于那些情况   默认情况下不会填充$ HTTP_RAW_POST_DATA,它是潜在的   激活的内存密集程度较低   always_populate_raw_post_data。 php://输入不可用   ENCTYPE = “多部分/格式数据”。

答案 2 :(得分:4)

所有发布的数据都将在$ _POST超全球中。

http://php.net/manual/reserved.variables.post.php

答案 3 :(得分:4)

是的,你可以简单地使用

     $input_data = $_POST;

extract()可能对您有用。

答案 4 :(得分:2)

您可以使用array_keys()检索$ _POST数组的所有键,然后使用这些键的值构建电子邮件。

var_dump($_POST)也会为您转储有关$ _POST中所有信息的信息。

答案 5 :(得分:2)

只要您不需要任何特殊格式:是。

foreach ($_POST as $key => $value) 
    $body .= $key . ' -> ' . $value . '<br>';

显然,需要更多的格式化,但这是“简单”的方式。除非我误解了这个问题。

你也可以这样做(如果你喜欢这种格式,那肯定更容易):

$body = print_r($_POST, true);

答案 6 :(得分:1)

要添加到其他人,var_export也可能很方便:

$email_text = var_export($_POST, true);

答案 7 :(得分:0)

您可以使用$_REQUEST以及$_POST来覆盖Post,Get和Cookie数据等所有内容。