Ответ 1
Конечно. Просто пройдите через массив $_POST
:
foreach ($_POST as $key => $value)
echo "Field ".htmlspecialchars($key)." is ".htmlspecialchars($value)."<br>";
Простой вопрос: возможно ли получить все данные, отправленные на страницу, даже если вы не знаете все поля?
Например, я хочу написать простой script, который собирает любые POSTed данные и отправляет их по электронной почте. Я могу предвидеть, что поля в форме, вероятно, со временем изменятся, и поэтому, чтобы сэкономить некоторое время в долгосрочной перспективе, мне было интересно, могу ли я написать что-то, что автоматически собрало все?
Возможно ли это?
Конечно. Просто пройдите через массив $_POST
:
foreach ($_POST as $key => $value)
echo "Field ".htmlspecialchars($key)." is ".htmlspecialchars($value)."<br>";
Никто не упоминал Необработанные почтовые данные, но хорошо знать, если опубликованные данные не имеют ключа, а только значение, используйте Исходные данные:
$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 = "многочастному/форм-данных".
Все опубликованные данные будут в супергалактике $_POST.
Вы можете получить все ключи массива $_POST с помощью array_keys(), а затем создать сообщения электронной почты со значениями этих ключей.
var_dump ($ _ POST) также выдаст вам всю информацию в $_POST для вас.
Пока вы не хотите специального форматирования: да.
foreach ($_POST as $key => $value)
$body .= $key . ' -> ' . $value . '<br>';
Очевидно, что потребуется больше форматирования, но это "легкий" способ. Если я не понял этот вопрос.
Вы также можете сделать что-то подобное (и если вам нравится формат, это, безусловно, проще):
$body = print_r($_POST, true);
Да, вы можете просто использовать
$input_data = $_POST;
или extract() может быть вам полезен.
Чтобы добавить к остальным, var_export может быть удобно:
$email_text = var_export($_POST, true);
Вы можете использовать $_REQUEST
, а также $_POST
, чтобы получить все данные, такие как данные Post, Get и Cookie.
foreach ($_POST as $key => $value)
echo "Поле".htmlspecialchars($ key). "is".htmlspecialchars($ value). "
";