PHP: Possible to automatically get all POSTed data?

PhpFormsPost

Php Problem Overview


Simple question: Is it possible to get all the data POSTed to a page, even if you don't know all the fields?

For example, I want to write a simple script that collects any POSTed data and emails it. I can foresee that the fields in the form are likely to change a lot over time, and so to save myself some time in the long run, I was wondering if I could write something that automatically gathered everything?

Is it possible?

Php Solutions


Solution 1 - Php

Sure. Just walk through the $_POST array:

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

Solution 2 - Php

No one mentioned Raw Post Data, but it's good to know, if posted data has no key, but only value, use Raw Post Data:

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

PHP Man: > php://input is a read-only stream that allows you to read raw data > from the request body. In the case of POST requests, it is preferable > to use php://input instead of $HTTP_RAW_POST_DATA as it does not > depend on special php.ini directives. Moreover, for those cases where > $HTTP_RAW_POST_DATA is not populated by default, it is a potentially > less memory intensive alternative to activating > always_populate_raw_post_data. php://input is not available with > enctype="multipart/form-data".

Solution 3 - Php

Yes you can use simply

     $input_data = $_POST;

or extract() may be useful for you.

Solution 4 - Php

All posted data will be in the $_POST superglobal.

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

Solution 5 - Php

As long as you don't want any special formatting: yes.

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

Obviously, more formatting would be necessary, however that's the "easy" way. Unless I misunderstood the question.

You could also do something like this (and if you like the format, it's certainly easier):

$body = print_r($_POST, true);

Solution 6 - Php

You can retrieve all the keys of the $_POST array using array_keys(), then construct an email messages with the values of those keys.

var_dump($_POST) will also dump information about all of the information in $_POST for you.

Solution 7 - Php

You can use $_REQUEST as well as $_POST to reach everything such as Post, Get and Cookie data.

Solution 8 - Php

To add to the others, var_export might be handy too:

$email_text = var_export($_POST, true);

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionChuck Le ButtView Question on Stackoverflow
Solution 1 - PhpPekkaView Answer on Stackoverflow
Solution 2 - PhpRoman NewazaView Answer on Stackoverflow
Solution 3 - PhpdiEchoView Answer on Stackoverflow
Solution 4 - PhpGeorge CumminsView Answer on Stackoverflow
Solution 5 - PhpTickthokkView Answer on Stackoverflow
Solution 6 - PhpbarfoonView Answer on Stackoverflow
Solution 7 - PhpTarikView Answer on Stackoverflow
Solution 8 - PhpsearleaView Answer on Stackoverflow