简单问题:是否可以获取页面上所有已发布的数据,即使您不知道所有字段?
例如,我想编写一个简单的脚本,收集任何已发布的数据并通过电子邮件发送。我预见到表单中的字段随着时间的推移可能会经常变化,因此为了长远考虑节省时间,我想知道是否可以编写自动收集所有数据的代码?
这种方式是否可行?
$_POST
数组即可:foreach ($_POST as $key => $value) {
echo "Field ".htmlspecialchars($key)." is ".htmlspecialchars($value)."<br>";
}
$_POST
数组中,因此如果您使用复选框,您需要使用 isset
等方法进行不同的处理。 - jeroen没有人提到原始发布数据(Raw Post Data),但需要知道的是,如果发布的数据没有键(key),只有值(value),请使用原始发布数据(Raw Post Data):
$postdata = file_get_contents("php://input");
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"时不可用。
extract($_POST)
将模拟register_globals
,不要这样做。 - netcoderextract
是非常糟糕的想法。请为自己着想,不要将不安全因素融入到您的代码中。 - mickmackusaforeach ($_POST as $key => $value)
$body .= $key . ' -> ' . $value . '<br>';
$body = print_r($_POST, true);
$body = print_r($_POST, true);
)对我来说是最简单的,而且不需要遍历子元素。在开发 Webhook 应用程序时,我只需要暂时查看原始的 POST 内容。 - SteveCinq您可以使用$_REQUEST
和$_POST
来获取所有的数据,包括Post、Get和Cookie数据。
只需回显 $_POST 的所有数据。
echo json_encode($_POST);
你也可以这样做以获得更好的视觉效果。
echo var_dump($_POST);