проверка, если filter_input возвращает false

Документация для filter_input() упоминает:

Значение запрошенной переменной в случае успеха, FALSE в случае сбоя фильтра,
или NULL, если переменная variable_name не установлена.

Изучив различные примеры в Интернете, я был удивлен, увидев, что ни один из них (по крайней мере, я знаю) не проверил значение FALSE, Большинство примеров проверено только на NULL значение :

if ( is_null( filter_input( INPUT_POST, 'name', FILTER_SANITIZE_STRING ) ) ) {
// display error
}

Для этого есть причина ? Или есть реальный пример из жизни, который проверяет FALSE значение ? Если да, не могли бы вы привести пример, чтобы я мог извлечь из этого пользу.

Кроме того, не могли бы вы указать обстоятельства, при которых filter_input может потерпеть неудачу. Очень признателен.

1

Решение

Это потому что! 0 это правда. Зачем? Добавив! вы выполняете логическую проверку, поэтому ваша переменная конвертируется. И согласно руководство:

При преобразовании в логическое значение следующие значения считаются ЛОЖНЫМИ:

the boolean FALSE itself

the integer 0 (zero)

the float 0.0 (zero)

the empty string, and the string "0"

Таким образом, целое число 0 конвертируется в false, а все остальные целые числа конвертируются в true.

Вот почему вам нужно выполнить безопасную проверку типа для false или null, так как это значения filter_input() возвращается, если по какой-то причине не получается

$name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);
if ($name === false) {
//filter failed
}
if ($name === null) {
//variable was not set
}
1

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

Других решений пока нет …

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