Подтвердить что ты не робот

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

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

Основная проблема, с которой я сталкиваюсь, заключается в том, что я отмечаю свою форму так, чтобы все данные были в одном массиве для ввода POST. например поля формы, страница [имя], страница [slug], страница [body], страница [status] и т.д.

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

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

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

4b9b3361

Ответ 1

Я не думаю, что вы можете получить доступ к одному значению (легко, как хотите), однако вы можете просто фильтровать массив 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);
}

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

Ответ 2

Как насчет

$_POST['page'] = filter_var_array($_POST['page'], FILTER_SANITIZE_STRING);