Новый input_filter PHP не читает $ _GET или $ _POST массивы

Я считаю, что это может быть то, что вы ищете.

В документации приведен следующий абзац:

Метод SetDropDownListBoxBounds

Метод SetDropDownListBoxBounds инициализирует размер и расположение раскрывающегося списка. Предпочтительный размер зависит в первую очередь от содержимого dropDownListBox, которое представляет собой отформатированные значения, хранящиеся в коллекции ключей словаря фильтров. Метод SetDropDownListBoxBounds сначала вызывает метод Graphics.MeasureString для каждого значения фильтра. Для каждого значения ширина сохраняется, если она шире всех предыдущих значений, а высота добавляется к общей сумме высоты для всех значений. Затем результаты используются для определения предпочтительного размера .

Предпочтительная высота является наименьшим из следующих значений :

  • Суммарная высота всех значений фильтра.
  • Указанная пользователем максимальная высота, рассчитанная по значению свойства DropDownListBoxMaxLines.
  • Доступная высота DataGridView управляющей клиентской области.
11
задан Edward Tanguay 18 November 2008 в 12:13
поделиться

4 ответа

Вы могли вручную вынудить это считать массивы снова при помощи filter_var и filter_var_array

$name = filter_var ( $_GET['name'], FILTER_SANITIZE_STRING );
19
ответ дан 3 December 2019 в 02:53
поделиться

При ручном изменении массива конечно, Вы не должны санировать его так или иначе? Почему Вы изменяете массивы так или иначе, конечно, Вы хотите, чтобы они были входом, а не чем-то, что Вы программно вставили.

Возможно, больше кода/контекста было бы полезно.

2
ответ дан 3 December 2019 в 02:53
поделиться

INPUT_GET укусил, просто identfier (число), говоря PHP, что это должно получить значение от $ _GET.

Если Вы хотите использовать filter_input на целом массиве, необходимо циклично выполниться через него, отправить каждый ключ массива в filter_input и отложить результат в $ _GET.

Вероятно, будет столь же легко просто записать функцию, которая делает очистку себя, и это должно также позволить Вам иметь дело с массивами в массивах (не похоже, что filter_input сделает это). Существует несколько этих демонстрационных функций в комментариях для документации PHP.net, делая материал как удаление "волшебных кавычек". Посмотрите здесь для примера.

1
ответ дан 3 December 2019 в 02:53
поделиться

Удобный способ сделать это, не изменяя глобальный массив:

if (!($name = filter_input(INPUT_GET, 'name'))) {
    $name = 'default_value';
}

Или используя троичный оператор:

$name = ($name = filter_input(INPUT_GET, 'name')) ? $name : 'default_value';
6
ответ дан 3 December 2019 в 02:53
поделиться
Другие вопросы по тегам:

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