代码之家  ›  专栏  ›  技术社区  ›  Anu

$_Post未获得数字0

  •  2
  • Anu  · 技术社区  · 6 年前

    我在一个表单中有以下代码,当按下提交按钮时,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>

    我的问题

    一切都很好,除了我把0作为输入, $_POST 没有任何价值。我的错误检查提示,请输入一个数字。 下面是我的错误检查代码

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

    但任何大于0的数字, $_post[“修订广告”] 抓取正确。我试图移除 min 属性以及更改为-1。但无论何时我输入数字0, $_post[“修订广告”] 不获取任何值。有人知道为什么吗?

    5 回复  |  直到 6 年前
        1
  •  3
  •   Qirel    6 年前

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

    确定变量是否被视为空。如果变量不存在或 如果它的值等于假 .

    在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');
    }
    
        2
  •  1
  •   Prince Adeyemi    6 年前

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

    <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
  •  1
  •   Gufran Hasan    6 年前

    您需要更改以下条件:

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

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

        4
  •  0
  •   vivek modi    6 年前

    必须将值属性中的0作为默认值。

    <input type="number" class="form-control" placeholder="Revision" name="revisionCad" id="revisionCad" min="0" value="0">
    
        5
  •  0
  •   Sanu_012    6 年前

    尝试 (!isset($revisonCad)) .我希望它能奏效。 既然你给了我 empty() 函数,它将0视为空值。因此,不获取任何输入。