2016-06-14 54 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

你應該使用或不和,並比較strlen的8個值

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

謝謝!我知道這很簡單。 –

+0

歡迎您:) – nospor

0

您在使用之前,你的功能,這也可以被翻譯爲is not!

你實際詢問的是:Is this variable not numeric?Is this variable not of lenghth ...

相反,你應該使用if (is_numeric($var) && strlen($var) == ...)

祝你好運!

相關問題