如何验证 $_GET 是不是存在?

Posted

技术标签:

【中文标题】如何验证 $_GET 是不是存在?【英文标题】: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"] 是否存在... 【参考方案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']) 不是必需的。

以上是关于如何验证 $_GET 是不是存在?的主要内容,如果未能解决你的问题,请参考以下文章

使用 youtube api v3 验证视频是不是存在

如何检查ajax返回是不是存在? [复制]

我应该如何在 javascript 或 nodeJs 中验证电子邮件地址是不是存在和域名是不是存在?

django怎么判断数据库的记录是不是存在

如何验证批处理文件中是不是存在文件?

如何验证文件夹是不是已存在