2016-06-14 5 views
-1

제출 양식을 사용하여 8 자리 숫자를 제출하고 있습니다. 나는 is_numeric과 strlen을 사용하여 "12345678"이 성공적으로 "adsf"와 "123"이 성공적으로 반환되는지 확인하려고합니다. 나는이 일을하기 위해 내가 놓친 것을 알아낼 수 없다.PHP가 is_numeric이고 거짓 일 때도 strlen이 true를 반환합니다.

<?php 

    if (!empty($_POST['WorkOrder']) && isset($_POST['WorkOrder'])) { 

     if (!is_numeric($_POST['WorkOrder']) && (!strlen($_POST['WorkOrder']) == 8)) { 

?> 
          <div class="alert alert-danger"> 
          You cannot enter a blank or invalid work order number! You entered <?php echo "\"".$_POST['WorkOrder']."\""; ?> 
         </div> 

<?php 
    } else { 
    $sql1 = ""; 
?> 

          <div class="alert alert-success"> 
          <?php echo $_POST['WorkOrder']. " has been updated successfully!"; ?> 
         </div> 

<?php 

    //mysql_query($sql1) or die(mysql_error()); 
    } } ?> 
+1

관련이 없지만'empty()'는 변수'isset()'도 검사합니다. 후자를 사용할 필요가 없습니다. – rnevius

답변

3

당신은 사용 여부와 그리고 또한 is not로 번역 할 수있는 기능 전에 !을 사용하는 8 값

if (!is_numeric($_POST['WorkOrder']) || strlen($_POST['WorkOrder']) !== 8) { 
+0

감사합니다. 나는 그것이 단순한 무엇인지 알았다. –

+0

당신은 환영합니다 :) – nospor

0

에 나 strlen 비교해야한다.

실제로 묻는 것은 Is this variable not numeric?Is this variable not of lenghth ...입니다.

대신 당신은 if (is_numeric($var) && strlen($var) == ...)

행운을 사용해야합니다!