2014-09-29 2 views
1

filter_input() 설명서에 언급 : FALSE 성공에 요청 변수의검증 filter_input가 false를 반환하는 경우

값 VARIABLE_NAME 변수가 설정되지 않은 경우 필터가 또는 NULL, 실패 할 경우.

온라인으로 여러 가지 예제를 연구 한 결과, (적어도 알고있는) 수치 중 어느 것도 값이 FALSE인지 확인하지 못한 것에 놀랐습니다. 대부분의 예제에서는 값만 확인했습니다.

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

이유가 있습니까? 또는 FALSE 값을 확인하는 실제 사례가 있습니까? 그렇다면, 제가 그 혜택을 누릴 수 있도록 예의를 친절하게 제공해 주시겠습니까?

또한 filter_input이 실패 할 수있는 상황을 친절하게 알려주십시오. 매우 감사.

+0

가 * "나는 이유에 대해 질문 한 어떤 이유로 실패 할 경우 허위 또는 null의 유형 안전 검사를해야 할 이유는 filter_input을 다룰 때 FALSE 값을 확인하지 마십시오. "* - 사람들은 때로는 이상한 동물이며, 우리는 왜 어떤 동물인지, 어떤 동물은 그렇지 않은지 모릅니다. –

+0

유머를 가져 주셔서 감사합니다.하지만 제 질문으로 돌아 오는 중입니다 ... '거짓'이 확인되고있는 예제가 있습니까? 둘째, 어떤 상황에서'filter_input'이 실패 할 가능성이 있습니까? – Grateful

+0

50 %의 유머와 50 %의 심각성 (* 유머 감각을 가지고있는 것을 알기에 좋았습니다);) 나는 거짓을 어디에 체크하고 있는지에 대한 예제를 줄 수는 없었습니다. 스택에 대한 다음 Q & A를 살펴보십시오. 난 * 희망 * 답변을 귀하의 질문에 http://stackoverflow.com/q/23392128/ - ** 편집 : ** 왜 그것은 가장 가능성이 실패 할 것이라고/그것이 필터 옵션에 따라 것이라고 생각/세트. –

답변

1

! 0이 true이기 때문입니다. 왜? 추가! 부울 값 검사를 수행하므로 변수가 변환됩니다. 그리고 manual에 따라 : 논리 값으로 변환 할 때

, 다음 값은 FALSE로 간주됩니다 : 다른 모든 정수가 true로 변환하는 동안

the boolean FALSE itself 

the integer 0 (zero) 

the float 0.0 (zero) 

the empty string, and the string "0" 

그래서 정수 0이 false로 변환됩니다.

당신이이 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

관련 문제