PHP filter_has_var() 函数

定义和用法

filter_has_var() 函数检查指定的变量名是否存在。

该函数可用于检查以下来源的变量:

  • INPUT_GET - GET 变量
  • INPUT_POST - POST 变量
  • INPUT_COOKIE - Cookie 变量
  • INPUT_SERVER - Server 变量
  • INPUT_ENV - 环境变量

语法

filter_has_var(int $type, string $variable_name): bool

参数值

参数 描述
$type 要检查的输入类型。必须是以下常量之一:
INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER, INPUT_ENV
$variable_name 要检查的变量名

返回值

如果变量存在返回 true,否则返回 false

示例

示例 1:检查 GET 变量

<?php
// 假设 URL 为:example.com?name=John&age=30
if (filter_has_var(INPUT_GET, "name")) {
    echo "GET 变量 'name' 存在";
} else {
    echo "GET 变量 'name' 不存在";
}
echo "<br>";

if (filter_has_var(INPUT_GET, "email")) {
    echo "GET 变量 'email' 存在";
} else {
    echo "GET 变量 'email' 不存在";
}
?>

示例 2:检查 POST 变量

<?php
// 检查表单提交的 POST 变量
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (filter_has_var(INPUT_POST, "username")) {
        $username = filter_input(INPUT_POST, "username", FILTER_SANITIZE_STRING);
        echo "用户名: " . htmlspecialchars($username);
    } else {
        echo "用户名未提交";
    }
}
?>

示例 3:结合使用 filter_has_var() 和 filter_input()

<?php
// 安全地获取并验证输入
if (filter_has_var(INPUT_GET, "id")) {
    $id = filter_input(INPUT_GET, "id", FILTER_VALIDATE_INT);
    if ($id !== false && $id > 0) {
        echo "有效的 ID: " . $id;
    } else {
        echo "无效的 ID";
    }
} else {
    echo "ID 参数未提供";
}
?>

示例 4:检查多个变量

<?php
// 检查多个必需的 POST 变量
$required_fields = ["name", "email", "password"];
$missing_fields = [];

foreach ($required_fields as $field) {
    if (!filter_has_var(INPUT_POST, $field)) {
        $missing_fields[] = $field;
    }
}

if (empty($missing_fields)) {
    echo "所有必需字段都已提交";
} else {
    echo "缺少以下字段: " . implode(", ", $missing_fields);
}
?>

注意事项

  • filter_has_var() 只检查变量是否存在,不检查其值是否为空
  • 变量值为 null 或空字符串时,函数仍返回 true
  • 对于未设置的变量,函数返回 false
  • 建议使用 filter_has_var() 结合其他过滤函数进行输入验证
  • 该函数从 PHP 5.2.0 开始可用

与 isset() 的区别

特性 filter_has_var() isset()
作用范围 可指定输入类型(GET、POST 等) 检查当前作用域中的变量
空值处理 对空字符串返回 true 对空字符串返回 true
NULL 值 对 NULL 值返回 true 对 NULL 值返回 false
未定义索引 返回 false,不产生警告 返回 false,可能产生警告

浏览器支持

该函数是 PHP 后端函数,与浏览器无关。