【问题标题】:How to verify if $_GET exists?如何验证 $_GET 是否存在?
【发布时间】:2012-08-14 17:19:56
【问题描述】:

所以,我有一些看起来有点像这样的 PHP 代码:

<body>
    The ID is 

    <?php
    echo $_GET["id"] . "!";
    ?>

</body>

现在,当我传递像 http://localhost/myphp.php?id=26 这样的 ID 时,它可以正常工作,但如果没有像 http://localhost/myphp.php 这样的 ID,那么它会输出:

The ID is
Notice: Undefined index: id in C:\xampp\htdocs\myphp.php on line 9
!

我已寻找解决此问题的方法,但找不到任何方法来检查 URL 变量是否存在。不过我知道一定有办法。

【问题讨论】:

  • 未定义索引不是错误,它只是一个警告。您可以通过编辑.htaccess 文件来关闭警告。
  • 验证$_GET 是否存在(如主题中)实际上是另一个问题,您正在尝试验证$_GET["id"] 是否存在...

标签: php html urlvariables


【解决方案1】:

你可以使用isset函数:

if(isset($_GET['id'])) {
    // id index exists
}

如果索引不存在,您可以创建一个方便的函数来返回默认值:

function Get($index, $defaultValue) {
    return isset($_GET[$index]) ? $_GET[$index] : $defaultValue;
}

// prints "invalid id" if $_GET['id'] is not set
echo Get('id', 'invalid id');

您也可以同时尝试验证:

function GetInt($index, $defaultValue) {
    return isset($_GET[$index]) && ctype_digit($_GET[$index])
            ? (int)$_GET[$index] 
            : $defaultValue;
}

// prints 0 if $_GET['id'] is not set or is not numeric
echo GetInt('id', 0);

【讨论】:

    【解决方案2】:
       if (isset($_GET["id"])){
            //do stuff
        }
    

    【讨论】:

      【解决方案3】:

      通常这样做很好:

      echo isset($_GET['id']) ? $_GET['id'] : 'wtf';
      

      因此,当将 var 分配给其他变量时,您可以一口气完成所有默认值,而不是不断使用 if 语句来给它们一个默认值(如果它们没有设置)。

      【讨论】:

      • WTF 就是一个例子......另外它是wtf 而不是wft
      • 更好的选择是null0
      • @Asaph wtf 是新的null :P 虽然他也在呼应,正如 OP 所说,他们用 No ID! 替换了 wtf,这就是它的设计目的, ehcoing null 不是很有用,在这种情况下 wtfnull imo 更有用
      • @Asaph 0 也可能是一个有效的 ID,所以这也不是一个很好的响应,因为它也没有被设置。
      • wtf 是一个可怕的值。
      【解决方案4】:

      你可以使用array_key_exists()内置函数:

      if (array_key_exists('id', $_GET)) {
          echo $_GET['id'];
      }
      

      isset() 内置函数:

      if (isset($_GET['id'])) {
          echo $_GET['id'];
      }
      

      【讨论】:

      • 使用其中一个有什么好处吗? array_key_exists 似乎更正确,但我几乎总是使用 isset。
      【解决方案5】:

      你正在使用 PHP isset

      例子

      if (isset($_GET["id"])) {
          echo $_GET["id"];
      }
      

      【讨论】:

      • 是的 .. 但请参阅文档以获取更多示例
      【解决方案6】:

      使用和empty() whit 否定(如果不为空则用于测试)

      if(!empty($_GET['id'])) {
          // if get id is not empty
      }
      

      【讨论】:

      • 如果id为0怎么办?记住空的返回 false 很多东西。
      【解决方案7】:

      请试一试:

      if(isset($_GET['id']) && !empty($_GET['id'])){
         echo $_GET["id"];
       }
      

      【讨论】:

      • empty($_GET['id']) 被翻译成!isset($var) || $var == false.,所以isset($_GET['id']) 不是必需的。
      猜你喜欢
      • 2013-05-02
      • 2017-09-05
      • 1970-01-01
      • 2019-11-19
      • 2015-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多