2016-06-14 7 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に変換することができ、あなたの関数の前!を使用している使用ORないとし、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) == ...)

幸運を使用する必要があります!

関連する問題