filter_has_var() 函数检查指定的变量名是否存在。
该函数可用于检查以下来源的变量:
filter_has_var(int $type, string $variable_name): bool
| 参数 | 描述 |
|---|---|
$type |
要检查的输入类型。必须是以下常量之一: INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER, INPUT_ENV |
$variable_name |
要检查的变量名 |
如果变量存在返回 true,否则返回 false。
<?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' 不存在";
}
?>
<?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 "用户名未提交";
}
}
?>
<?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 参数未提供";
}
?>
<?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 或空字符串时,函数仍返回 truefalsefilter_has_var() 结合其他过滤函数进行输入验证| 特性 | filter_has_var() | isset() |
|---|---|---|
| 作用范围 | 可指定输入类型(GET、POST 等) | 检查当前作用域中的变量 |
| 空值处理 | 对空字符串返回 true | 对空字符串返回 true |
| NULL 值 | 对 NULL 值返回 true | 对 NULL 值返回 false |
| 未定义索引 | 返回 false,不产生警告 | 返回 false,可能产生警告 |
该函数是 PHP 后端函数,与浏览器无关。