PHP Filter, как фильтровать входной массив - PullRequest
16 голосов
/ 04 мая 2010

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

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

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

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

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

Ответы [ 2 ]

14 голосов
/ 04 мая 2010

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

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

8 голосов
/ 04 мая 2010

Как насчет

$_POST['page'] = filter_var_array($_POST['page'], FILTER_SANITIZE_STRING);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...