【问题标题】:Filter input to be validated and required in PHP在 PHP 中过滤要验证和需要的输入
【发布时间】:2017-05-19 03:00:03
【问题描述】:

我正在使用 PHP 和 filter_input 函数来过滤 GET 变量并验证它们:

$id = filter_input(INPUT_GET, "id", FILTER_VALIDATE_INT);

但是当 id 参数在 URL 中不存在时,上面的语句会使 $id 为 NULL。

我希望 $id 成为 false 时:

  • 它不是一个有效的整数或
  • $_GET["id"] 不存在。

这样,当我想检查$id 是否一般有效时,我只将它与false 进行比较。 有没有办法用一个语句验证输入变量并检查其是否存在?我认为在上述条件下最好使用$idNULL,因此布尔输入没有问题。

目前我正在使用上述语句和以下if 块:

if ($id !== false && $id !== NULL) {
   // statements to run when $id is valid and present
}

【问题讨论】:

  • 零也是无效ID吗?
  • @Scopey 是的,它可能是。我想要这个问题的通用解决方案。也请考虑其他基本数据类型(字符串、布尔值、浮点数)。
  • issetnull 值返回 false。这不包括$id === false 的情况。您可以尝试is_int($id),因为它应该涵盖所有有效情况,包括零。
  • @Scopey 太好了。我认为这也适用于具有类似功能的其他数据类型。 +1
  • @deceze 你甚至有一篇关于isset 用法的博文!一切都好 - 很高兴能提供帮助。

标签: php validation input


【解决方案1】:

转过来:filter_input 将返回 int 或两个可能的 falsey 值之一。要测试它是否因任何原因失败或您收到int,请查看您是否收到int

if (is_int($id)) ...

falsenull 之间的区别进一步让您可以根据需要辨别到底出了什么问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    • 1970-01-01
    • 2023-01-29
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多