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

Chu*_*utt 51 php forms post

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

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

可能吗?

Pek*_*ica 94

当然.只需浏览$_POST阵列:

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

  • @Django Reinhardt请注意,未检查的复选框不会出现在`$ _POST`数组中,因此如果使用复选框,则需要使用`isset`来处理它们. (4认同)

Rom*_*aza 33

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

$postdata = file_get_contents("php://input");
Run Code Online (Sandbox Code Playgroud)

PHP人:

php:// input是一个只读流,允许您从请求正文中读取原始数据.在POST请求的情况下,最好使用php:// input而不是$ HTTP_RAW_POST_DATA,因为它不依赖于特殊的php.ini指令.此外,对于默认情况下未填充$ HTTP_RAW_POST_DATA的情况,它可能是激活always_populate_raw_post_data的内存密集型替代方案.php://输入不适用于enctype ="multipart/form-data".


diE*_*cho 6

是的,您可以简单地使用

     $input_data = $_POST;
Run Code Online (Sandbox Code Playgroud)

extract()可能对您有用。

  • `extract($ _ POST)`会模仿`register_globals`。不要那样做 (4认同)

Geo*_*ins 5

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

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