PHP:可能自动获取所有的POST数据?

简单的问题:即使你不知道所有的字段,是否有可能将所有的数据发送到页面?

例如,我想编写一个简单的脚本来收集任何POST数据并发送邮件。 我可以预见,随着时间的推移,表单中的字段可能会发生很大的变化,为了长时间节省我一些时间,我想知道我能不能写一些自动收集所有内容的东西?

可能吗?

当然。 只需遍历$_POST数组:

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

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

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

PHP的男人:

php://input是一个只读stream,允许您从请求主体读取原始数据。 在POST请求的情况下,最好使用php://input而不是$ HTTP_RAW_POST_DATA,因为它不依赖于特殊的php.ini指令。 而且,对于缺省情况下$ HTTP_RAW_POST_DATA没有被填充的情况,这对于激活always_populate_raw_post_data是一个潜在的更less的内存密集的select。 php://input不可用enctype =“multipart / form-data”。

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

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

只要你不想要任何特殊的格式:是的。

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

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

你也可以做这样的事情(如果你喜欢这种格式,这当然更容易):

 $body = print_r($_POST, true); 

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

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

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

 $email_text = var_export($_POST, true); 

是的,你可以使用简单

  $input_data = $_POST; 

或extract()可能对你有用。

您可以使用$_REQUEST以及$_POST来获取Post,Get和Cookie数据。

 foreach ($_POST as $key => $value) 

echo“Field”.htmlspecialchars($ key)。“is”.htmlspecialchars($ value)。“
“;