2014-09-29 1 views
1

Документация filter_input() упоминает:проверка если 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

* "Я спрашивал о причине, почему большинство людей сделали не проверяйте значение FALSE при работе с filter_input. "* - Люди просто странные животные время от времени, мы не знаем, почему некоторые делают, а некоторые нет. –

+0

Благодарим вас за юмор, но вернемся к моему вопросу ... есть ли у вас примеры, на которых проверяется FALSE? Во-вторых, при каких обстоятельствах 'filter_input' может потерпеть неудачу? – Grateful

+0

Это был 50% юмора и 50% серьезности (* приятно видеть, что у вас есть чувство юмора *);) Я не мог привести вам пример того, где проверяется FALSE. Взгляните на следующие вопросы и ответы на Stack; Я думаю, что он может надеяться * ответить на ваш вопрос http://stackoverflow.com/q/23392128/ - ** Изменить: ** Почему это, скорее всего, не получится, я бы сказал/подумал, что это будет зависеть от параметров фильтра, которые задавать. –

ответ

1

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

При преобразовании в булево, следующие значения считаются FALSE:

the boolean FALSE itself 

the integer 0 (zero) 

the float 0.0 (zero) 

the empty string, and the string "0" 

Так целое число 0 преобразуется в ложное, а все остальные целые числа преобразуются в действительности.

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

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

У меня нет вашего вопроса, но, пожалуйста, перейдите по следующей ссылке, я вам поможем. http://www.sitepoint.com/input-validation-using-filter-functions/ – deadman

+0

Благодарим вас за вашу ссылку – Grateful