PHP: Возможно ли автоматически получать все опубликованные данные?
Простой вопрос: Возможно ли разместить все данные на странице, даже если вы не знаете всех полей?
Например, я хочу написать простой скрипт, который собирает любые опубликованные данные и отправляет их по электронной почте. Я могу предвидеть, что поля в форме, вероятно, со временем сильно изменятся, и поэтому, чтобы сэкономить время в долгосрочной перспективе, мне было интересно, смогу ли я написать что-то, что автоматически соберет все?
Возможно ли это?
8 answers
Конечно. Просто пройдитесь по массиву $_POST
:
foreach ($_POST as $key => $value) {
echo "Field ".htmlspecialchars($key)." is ".htmlspecialchars($value)."<br>";
}
Никто не упоминал Необработанные почтовые данные , но полезно знать, что если у опубликованных данных нет ключа, а есть только значение, используйте Необработанные почтовые данные:
$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="составные/данные формы".
Все опубликованные данные будут находиться в суперглобале $_POST.
Если вы не хотите никакого специального форматирования: да.
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);
Вы можете использовать $_REQUEST
, а также $_POST
для доступа ко всему, например, к данным Post, Get и Cookie.