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超全局中。
只要你不想要任何特殊的格式:是的。
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)。“
“;