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


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

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

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

Author: Paul, 2011-06-13

8 answers

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

foreach ($_POST as $key => $value) {
    echo "Field ".htmlspecialchars($key)." is ".htmlspecialchars($value)."<br>";
}
 78
Author: Pekka 웃, 2018-07-11 15:42:17

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

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

PHP Человек:

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

 28
Author: Roman Newaza, 2012-09-27 10:03:41

Все опубликованные данные будут находиться в суперглобале $_POST.

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

 4
Author: George Cummins, 2011-06-13 19:39:53

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

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

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

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

$body = print_r($_POST, true);
 2
Author: Tickthokk, 2011-06-13 18:57:01

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

Var_dump($_POST) также сбросит для вас информацию обо всей информации в $_POST.

 2
Author: barfoon, 2011-06-13 19:54:28

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

     $input_data = $_POST;

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

 2
Author: diEcho, 2011-06-13 19:55:19

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

$email_text = var_export($_POST, true);
 1
Author: searlea, 2011-06-13 19:05:00

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

 0
Author: Tarik, 2011-06-13 18:58:43