Я получил файл 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
это не сработало.
Если вы фильтруете значения с плавающей точкой (цены), я бы порекомендовал отфильтровать их с флагом 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
);
Я разбил параметры на отдельные строки просто для удобства чтения здесь 🙂
Благодаря @ 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));
Сделал работу.