php验证阻止输入0作为值?

时间:2014-03-19 19:59:49

标签: php validation zero

我有一个表格中的字段,用于输入网球运动员赢得的主人头衔数量。有些球员有0个冠军。即使我的验证检查空字段,我也无法输入0.我需要进行哪些更改才能允许输入0?

if (empty($_POST["masters"])) {
    $has_errors = true;
    $mastersErr = "Enter 0-10";
} else {
    $masters = validate_input($_POST["masters"]);
}

1 个答案:

答案 0 :(得分:6)

使用if ($_POST["masters"] === '') {检查空字符串

这是因为

如果$ variable等于false,null,''

empty($variable)返回true。 (空字符串)或0

您无法使用$_POST['masters'] == '',因为在PHP语句中0 == ''是真的

您必须使用===运算符

请注意$_POST['xxx'] === 0永远不会有效,因为$_POST中的值是字符串


无论如何,如果你想让用户把数字放在0-10之间,我建议你做这个检查

if(is_numeric($var) && ($var >= 0) && ($var <= 10) && (intval($var) == $var))
{
    // OK
}else
{
   // not OK
}

这是因为空格字符将通过$_POST["masters"] === ''检查。

在验证中,你应该始终创建if语句,记住要检查&#34;这个值是否正常&#34;,不是&#34;这个值是不好的&#34;。例如,如果您要验证电子邮件,则不要使用电子邮件。检查&#34;是空的&#34; &#34;是一个数字&#34; &#34;值是一个浮动&#34;,你检查&#34;是一个电子邮件&#34; |

is_numeric()很好,因为

  • is_numeric('')是假的
  • is_numeric(' ')是假的
  • is_numeric(0)是真的

但要注意!因为

  • is_numeric('0.1')也是如此......

...所以你需要另一张支票:

(intval($var) == $var) - 这是确保用户输入整数(非浮点数)

的方法

PHP手册