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

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

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

Является ли это возможным?

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

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

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

 $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 = "multipart / form-data".

Все опубликованные данные будут в супер-лоб-файле $ _POST.

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

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

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

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

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

 $body = print_r($_POST, true); 

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

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 "Поле" .htmlspecialchars ($ key). "is" .htmlspecialchars ($ value). "
«;