вход фильтра — PHP filter_require_array не работает

Я получил файл AJAX, который может получить массив в качестве переменной POST. Массив выглядит так:

array(
'NAME' => PRICE,
'NAME2' => PRICE2
)

Например, вот var_dump об одной возможности: (var_dump($_POST['additions']))

array(2) {
["vloer"]=>
string(5) "50.00"["dak"]=>
string(5) "20.00"}

Чтобы отфильтровать массив, я использую следующую строку:

$additions = filter_input(INPUT_POST, 'additions', FILTER_REQUIRE_ARRAY);

К моему шоку, это возвращает ложь по какой-то причине. Я старался filter_input_array а что не сработало. Даже без FILTER_REQUIRE_ARRAY это не сработало.

1

Решение

Если вы фильтруете значения с плавающей точкой (цены), я бы порекомендовал отфильтровать их с флагом FILTER_FLAG_ALLOW_FRACTION как FILTER_DEFAULT == FILTER_UNSAFE_RAW и вы можете получить нежелательную инъекцию на входе.

$additions = filter_input(
INPUT_POST,
'additions',
FILTER_SANITIZE_NUMBER_FLOAT,
FILTER_REQUIRE_ARRAY + FILTER_FLAG_ALLOW_FRACTION
);

Я разбил параметры на отдельные строки просто для удобства чтения здесь 🙂

2

Другие решения

Благодаря @ bxN5 (PHP filter_require_array не работает):

изменения

$additions = filter_input(INPUT_POST, 'additions', FILTER_REQUIRE_ARRAY);

В

$additions = filter_input(INPUT_POST, 'additions', FILTER_DEFAULT , FILTER_REQUIRE_ARRAY));

Сделал работу.

2

По вопросам рекламы [email protected]