【问题标题】:How to check weather the $_GET is being received or not? (PHP)如何检查是否收到 $_GET 的天气? (PHP)
【发布时间】:2011-07-19 21:45:55
【问题描述】:

我在页面上有一个表格。它有太多东西,比如复选框、文本字段和下拉菜单。 但是当我没有选择其中一个复选框时,我捕获表单的 PHP 页面会显示一个错误。

例子:

HTML 代码:

Checkbox 1<input type="checkbox" name="check1" value="on" />
Checkbox 2<input type="checkbox" name="check2" value="on" />

PHP 代码:

$check1 = $_GET['check1'];
$check2 = $_GET['check2'];

如果这两个项目都被选中并在 URL 中发送,则可以正常工作:

localhost/project/checkbox.php?check1=on&check2=on

但是当我取消选择其中1个时,假设check2,那么URL是这样的:

localhost/project/checkbox.php?check1=on

它向我显示了一个错误 - $check2 是一个未定义的索引。

但如果未选中复选框,我不希望它显示错误。我还尝试了if 语句来检查我是否在 URL 中得到它,但它没有工作。

有没有办法首先检查是否在 URL 中传递数据?因为我没有得到错误。 实际上,错误不是主要问题,因为我得到了正确的结果,而且我知道我可以关闭 php.ini 中的错误报告,但这不是我想要做的。我想让它先检查是否有数据进来?

谢谢...

【问题讨论】:

    标签: php url get undefined-index


    【解决方案1】:

    复选框值仅在选中时才被注册。所以你可以简单地做一个这样的检查:

    $check1 = isset($_GET['check1']);
    $check2 = isset($_GET['check2']);
    

    $check1$check2 现在将具有布尔值:

    echo "Checkbox 1 one is " . ($check1 ? "checked" : "not checked") . PHP_EOL;
    echo "Checkbox 2 one is " . ($check2 ? "checked" : "not checked") . PHP_EOL;
    

    【讨论】:

      【解决方案2】:

      if (isset($_GET['check2']) &amp;&amp; !empty($_GET['check2']) 将检查 check2 GET 参数是否存在且不为空。

      【讨论】:

      • 你可以只使用 !empty($_GET['check2'])
      • @yes123:如果该查询参数包含 0 或空格字符,则会失败。 $x = 0; echo empty($x) ? 'y' : 'n' 会说'y'。 empty 是一个非常愚蠢的函数。
      猜你喜欢
      • 2016-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-20
      • 1970-01-01
      相关资源
      最近更新 更多