$ _POST没有得到数字零

时间:2018-06-19 03:54:26

标签: php html post

我在表单中有以下代码,当按下提交按钮时,php端使用$_POST['revisionCad']抓取输入值。



<form method="POST">
    <input type="number" class="form-control" placeholder="Revision" name="revisionCad" id="revisionCad" min="0">

    <button name="submit" class="btn btn-primary" id="submit" tabindex="5" value="Save" type="submit" style="width:200px;">Create/Change Revision</button>
</form>
&#13;
&#13;
&#13;

我的问题

一切正常,除非我将数字0作为输入,$_POST没有任何价值。我的错误检查告诉,请输入一个号码。 以下是我的错误检查代码

if(isset($_POST['revisionCad'])){
    $revisionCad = $_POST['revisionCad'];  
}

if(empty($revisionCad)){
    erDisplay('Please select a revision for Cadgui');
}

但任何大于0的数字$_POST['revisionCad']都正确抓取。我尝试删除min属性以及更改为-1。但是每当我输入数字0时,$_POST['revisionCad']都没有抓住任何值。谁知道为什么?

5 个答案:

答案 0 :(得分:3)

要解释为什么会发生这种情况,您必须仔细查看PHP empty()函数。从文档中我们看到(强调我的)......

  

确定变量是否为空。如果变量不存在,则视为空;如果其值等于FALSE ,则变为

在PHP中,零值是一个假值。所以你得到以下输出,

var_dump(false == 0); // Outputs "true"
var_dump(empty(0));   // Outputs "true"

因此,您需要更改代码以检查变量是否已设置且大于或等于零,您可以通过更改显示给以下内容的代码段来执行此操作。

if (isset($_POST['revisionCad']) && $_POST['revisionCad'] >= 0) {
    $revisionCad = $_POST['revisionCad'];
} else {
    erDisplay('Please select a revision for Cadgui');
}

答案 1 :(得分:1)

您需要更改以下条件:

if(isset($revisionCad) && $revisionCad >=0){
    erDisplay('Please select a revision for Cadgui');
}

实际上empty()函数将0视为空值,因此它会出现此错误。

答案 2 :(得分:1)

为表单添加默认值或动态更改代码,如下所示:

<form method= "POST">
<!-- <input type="number" class="form-control" placeholder="Revision" name="revisionCad" id="revisionCad" min="0"> -->

/** Assign default value or set it automatically in your code.**/
<input type="number" class="form-control" placeholder="Revision" name="revisionCad" id="revisionCad" min="0" value=0>

<button name="submit" class="btn btn-primary" id="submit" tabindex="5" value="Save" type="submit" style="width:200px;">Create/Change Revision</button>
</form>

您的PHP代码:

if(isset($_POST['revisionCad'])){
  $revisionCad = $_POST['revisionCad'];  
}


if(empty($revisionCad)){
    erDisplay('Please select a revision for Cadgui');
    }

应改为:

    // You can set a default value of 0 in the code or leave it at null;
    $revisionCad = (isset($_POST['revisionCad']) && !empty( $_POST['revisionCad'] ) || $_POST['revisionCad'] >=0 ) ? 
    trim($_POST['revisionCad']) : null;


/* Check if data is set to default null by your script,
 * Display error, since no data was received
 */
if(is_null($revisionCad))
{
  erDisplay('Please select a revision for Cadgui');
}

// if no error, continue with the rest of the codes ...

我希望这会有所帮助。

答案 3 :(得分:0)

你必须在value属性中给出0作为默认值。

<input type="number" class="form-control" placeholder="Revision" name="revisionCad" id="revisionCad" min="0" value="0">

答案 4 :(得分:0)

试试(!isset($revisonCad))。我希望它有效。 由于您已经提供了empty()函数,因此将0视为空值。因此,没有抓住任何输入。