2017-11-21 4 views
-2

는 웹 사이트가이 양식을 사용하여 말할 수 있습니다.사용자가 isset() 또는 empty()를 사용하지 않고 양식을 채우는 것을 잊었는지 확인하는 방법? <br> <code>...</code><br> <code><input type="text" name="Username"></code><br> <code>...</code></p> <p>을 그리고 사용자가 자신의 이름을 작성하는 것을 잊지 :

은 그러나 당신은 당신의 PHP 코드에서이 if 문이 있습니다
...
$posted_username = $_POST['Username'];
if (isset($posted_username))
...

isset()와 함께 "문제"입니다. 그것은 사실을 반환합니다. isset()NULL 이외의 값이면 TRUE를 리턴하기 때문에 변수가 실제로 설정되었다고합니다.

PHP 설명서에 따르면 isset()"var가 있고 NULL이 아닌 값이 있으면 TRUE를 반환하고 그렇지 않으면 FALSE를 반환합니다."
하지만 사용자가 사용자 이름을 입력하는 것을 잊어 버린 경우 어떻게 확인합니까?

"너 바보 야! empty() 만 사용하십시오."
사용자가 사용자 이름에 "0"을 갖고 싶다면 어떻게 될까요?
"0"으로 채워져 있어도 필드가 비어 있다고 말할 수 있습니다.

그래서 사용자가 양식을 작성하는 것을 잊었는지 확인하는 간단한 방법은 무엇입니까? 사용자는 사용자 이름으로 "0"을 가질 수 있어야합니다.

+1

'경우 (나 strlen ($ _ POST [ '이름']) === 0) {...}' – iainn

+0

@ iainn 와우, 나는 그걸 생각하지 않았다는 것을 믿을 수 없다. 많은 감사합니다. – Oscar

+0

사람들이 공백 사용자 이름을 가지고 있어도 괜찮 으면, 길이를 확인하기 전에 엔트리를 자르고 싶을 것입니다. –

답변

1

당신은 입력 문자열의 길이가 PHP의 strlen function을 사용하여 수행 할 수있는, 0보다 큰 경우 테스트하기 위해 찾고 : 필드가 $ _POST에서 누락 된 경우

if (strlen($_POST['Username']) === 0) { 
    // User did not fill out the field 
} 

이 동일하게 작동합니다 (즉, null), 건너 뛰었거나, 과 같이 empty()이 잘못 될 수있는 값에 대해서는 올바르게 작동합니다. 당신은 또한 사용자가 공백 (아마 좋은 생각)으로 구성된 사용자 이름을 제출하지 못하게하려면

trim() 호출을 포함 :

if (strlen(trim($_POST['Username'])) === 0) { 
    ... 
}