html 选择值 0 在 php 验证中始终为空

mnl*_*her 1 php http-post validate-request

我尝试发布选定的值并检查变量是否为空。

html:

<select id="monitors-old" class="form-control" name="monitors-old">
   <option value="">Auswählen...</option>
   <option value="0" <?php if ($personData["cmo_mon"] == "0"){echo 'selected';}?>>0</option>
   <option value="1" <?php if ($personData["cmo_mon"] == "1"){echo 'selected';}?>>1</option>
   <option value="2" <?php if ($personData["cmo_mon"] == "2"){echo 'selected';}?>>2</option>
   <option value="3" <?php if ($personData["cmo_mon"] == "3"){echo 'selected';}?>>3</option>
   <option value="4" <?php if ($personData["cmo_mon"] == "4"){echo 'selected';}?>>4</option>
</select>
Run Code Online (Sandbox Code Playgroud)

结果 html:

<select id="monitors-old" class="form-control" name="monitors-old">
   <option value="">Auswählen...</option>
   <option value="0" selected="">0</option>
   <option value="1">1</option>
   <option value="2">2</option>
   <option value="3">3</option>
   <option value="4">4</option>
</select>
Run Code Online (Sandbox Code Playgroud)

邮政检查:

if (empty($_POST["monitors-old"])) {
   $errors[] = "Alt-Monitore is required.";
   die;
} else {
   $monitors_old = validateInput($_POST["monitors-old"]);
}
Run Code Online (Sandbox Code Playgroud)

值 0 始终为空并且脚本触发了模具,所有其他值都在工作。值 0 像“”吗?

还试过:

<select id="monitors-old" class="form-control" name="monitors-old">
   <option>Auswählen...</option>
   <option selected="">0</option>
   <option>1</option>
   <option>2</option>
   <option>3</option>
   <option>4</option>
</select>
Run Code Online (Sandbox Code Playgroud)

这也有效,但同样的问题。另一个问题,为什么 selected 分配给 ="" ?我以为它只是一个html标签,这个值是选定的?

验证输入:

function validateInput($value) {
    $value = trim($value);
    $value = stripslashes($value);
    $value = htmlspecialchars($value);
    return $value;
}
Run Code Online (Sandbox Code Playgroud)

She*_*ose 5

如果该值为偶数 0,该empty()函数将返回TRUE

所以你应该使用isset()函数和!=操作来检查

if(isset($_POST["monitors-old"]) and $_POST["monitors-old"]!=''){
    // code here
}
else{
    // code here
}
Run Code Online (Sandbox Code Playgroud)