Фильтр PHP, как отфильтровать входной массив

Я использую фильтр PHP для выполнения основной санитизации и проверки данных формы.

Принципиальная проблема, которую я имею, состоит в том, что я повышаю свою форму так, чтобы все данные были в одном массиве для входа POST. например, поля формы, страница [имя], страница [краткий заголовок], страница [тело], страница [состояние], и т.д.

Используя следующее:

filter_input(INPUT_POST, 'page[name]', FILTER_SANITIZE_STRING);
OR
filter_input(INPUT_POST, "page['name']", FILTER_SANITIZE_STRING);

Я не могу получить доступ к переменной. Может кто-то говорить мне корректное имя для использования для данных массива доступа с помощью filter_input ()

16
задан 3 May 2010 в 20:11
поделиться

2 ответа

Я не думаю, что вы можете получить доступ к отдельному значению (легко, как вы хотите), однако вы можете просто отфильтровать массив page и получить нужное вам значение.

$page = filter_input(INPUT_POST, 'page', FILTER_SANITIZE_STRING, FILTER_REQUIRE_ARRAY);
if (array_key_exists('name', $page)) {
    $name = $page['name'];
}

Или, если вы не против потери возможности работать с необработанным вводом, вы можете просто использовать:

if (isset($_POST['page']['name'])) {
    $name = filter_var($_POST['page']['name'], FILTER_SANITIZE_STRING);
}

Оба варианта, однако, довольно уродливы.

14
ответ дан 30 November 2019 в 22:02
поделиться

Как насчет

$_POST['page'] = filter_var_array($_POST['page'], FILTER_SANITIZE_STRING);
8
ответ дан 30 November 2019 в 22:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: