php is_numeric和strlen即使在false时也返回true

时间:2016-06-14 12:27:50

标签: php strlen

我使用提交表单提交8位数字。我正在尝试使用is_numeric和strlen来确保" 12345678"然而,返回成功" adsf"和" 123"也回归成功。我无法弄清楚我错过了什么来实现这一目标。

<?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());
  } } ?>

2 个答案:

答案 0 :(得分:3)

你应该使用OR而不是AND并将strlen与8值进行比较

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

答案 1 :(得分:0)

您在使用功能之前使用的!也可以转换为is not

您实际要问的是:Is this variable not numeric?Is this variable not of lenghth ...

相反,您应该使用if (is_numeric($var) && strlen($var) == ...)

祝你好运!