Подтвердить что ты не робот

PHP: Возможно автоматическое получение всех данных POSTed?

Простой вопрос: возможно ли получить все данные, отправленные на страницу, даже если вы не знаете все поля?

Например, я хочу написать простой script, который собирает любые POSTed данные и отправляет их по электронной почте. Я могу предвидеть, что поля в форме, вероятно, со временем изменятся, и поэтому, чтобы сэкономить некоторое время в долгосрочной перспективе, мне было интересно, могу ли я написать что-то, что автоматически собрало все?

Возможно ли это?

4b9b3361

Ответ 1

Конечно. Просто пройдите через массив $_POST:

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

Ответ 2

Никто не упоминал Необработанные почтовые данные, но хорошо знать, если опубликованные данные не имеют ключа, а только значение, используйте Исходные данные:

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

PHP Man:

php://input - поток, доступный только для чтения, который позволяет вам читать исходные данные от органа запроса. В случае запросов POST предпочтительнее использовать вход php://вместо $HTTP_RAW_POST_DATA, поскольку он не зависят от специальных директив php.ini. Более того, для тех случаев, когда $HTTP_RAW_POST_DATA по умолчанию не заполняется, это потенциально менее энергоемкая альтернатива активации always_populate_raw_post_data. php://ввод недоступен с ENCTYPE = "многочастному/форм-данных".

Ответ 4

Вы можете получить все ключи массива $_POST с помощью array_keys(), а затем создать сообщения электронной почты со значениями этих ключей.

var_dump ($ _ POST) также выдаст вам всю информацию в $_POST для вас.

Ответ 5

Пока вы не хотите специального форматирования: да.

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

Очевидно, что потребуется больше форматирования, но это "легкий" способ. Если я не понял этот вопрос.

Вы также можете сделать что-то подобное (и если вам нравится формат, это, безусловно, проще):

$body = print_r($_POST, true);

Ответ 6

Да, вы можете просто использовать

     $input_data = $_POST;

или extract() может быть вам полезен.

Ответ 7

Чтобы добавить к остальным, var_export может быть удобно:

$email_text = var_export($_POST, true);

Ответ 8

Вы можете использовать $_REQUEST, а также $_POST, чтобы получить все данные, такие как данные Post, Get и Cookie.

Ответ 9

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

echo "Поле".htmlspecialchars($ key). "is".htmlspecialchars($ value). "
";