Простой вопрос: возможно ли получить все данные, отправленные на страницу, даже если вы не знаете все поля?
Например, я хочу написать простой скрипт, который собирает любые 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.
Пока вы не хотите специального форматирования: да.
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). "
«;