我有一个表格中的字段,用于输入网球运动员赢得的主人头衔数量。有些球员有0个冠军。即使我的验证检查空字段,我也无法输入0.我需要进行哪些更改才能允许输入0?
if (empty($_POST["masters"])) {
$has_errors = true;
$mastersErr = "Enter 0-10";
} else {
$masters = validate_input($_POST["masters"]);
}
答案 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手册: