【问题标题】:PHP Notice SuppressionPHP 通知抑制
【发布时间】:2013-08-07 14:55:30
【问题描述】:

我正在从 $_GET 数组中检索一些行,其中一些是复选框值。由于它们只会在 $_GET 数组中显示“on”状态,因此我设计了以下解决方案来为我将发送给客户端的字符串添加“off”。这是它的样子:

if(!($_GET['active'][$row])){  //row is incremented in a loop
    $oactive = "off";
}else{
    $oactive = "FBINSERTa".":". "\"" . $_GET['active'][$row] ."\"";
}

相对简单,这很有效,如果 ['active'][$row] 没有任何内容,则推迟 $oactive。但是,如果 $_GET['active'][$row] 的值未定义,PHP 会回显一个通知:

注意:未定义的偏移量:6 in ...\page.php 第x行

我可以使用 error_reporting() 来抑制它,但我想找到更好的方法。有什么想法吗?

【问题讨论】:

  • 在尝试使用之前检查值isset
  • 一个更好的问题标题是,如何防止通知,而不是抑制消息。
  • 在使用前进行输入验证。
  • @StevenV 公平地说,最后一句说“我可以用 error_reporting() 抑制它,但 我想找到更好的方法
  • 你确实说过,我为你想要做正确的事而鼓掌。但是这里的很多人会仅仅根据标题来判断一个问题,正如你所说,应该有更好的方法。

标签: php checkbox error-handling get undefined


【解决方案1】:

在尝试使用它之前检查它是否已设置,isset

if(isset($_GET['active'][$row]) && $_GET['active'][$row]==false){

【讨论】:

    【解决方案2】:

    你应该使用isset:

    if(isset($_GET['active'][$row])){  //row is incremented in a loop
        $oactive = "off";
    }else{
        $oactive = "FBINSERTa".":". "\"" . $_GET['active'][$row] ."\"";
    }
    

    另一个选项是在每个复选框之前的标记中包含一个input 类型为hidden 和一个默认值(我猜是“关闭”)(并且名称相同),这样的值如果在提交表单时选中该复选框,则会优先考虑,否则将提交来自隐藏输入的默认值。

    例子:

    <input type="hidden" name="myCheckbox" value="off" />
    <label>
      <input type="checkbox" name="myCheckbox" value="on" />
      Check me!
    </label>
    

    【讨论】:

      猜你喜欢
      • 2020-02-15
      • 2011-10-26
      • 2014-01-20
      • 2013-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-08
      • 1970-01-01
      相关资源
      最近更新 更多