Документация для filter_input()
упоминает:
Значение запрошенной переменной в случае успеха, FALSE в случае сбоя фильтра,
или NULL, если переменная variable_name не установлена.
Изучив различные примеры в Интернете, я был удивлен, увидев, что ни один из них (по крайней мере, я знаю) не проверил значение FALSE
, Большинство примеров проверено только на NULL
значение :
if ( is_null( filter_input( INPUT_POST, 'name', FILTER_SANITIZE_STRING ) ) ) {
// display error
}
Для этого есть причина ? Или есть реальный пример из жизни, который проверяет FALSE
значение ? Если да, не могли бы вы привести пример, чтобы я мог извлечь из этого пользу.
Кроме того, не могли бы вы указать обстоятельства, при которых filter_input может потерпеть неудачу. Очень признателен.
Это потому что! 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
}
Других решений пока нет …