PHP 提供了 filter_var() 和 filter_input() 函数,用于过滤和验证输入数据。这些函数可以帮助你确保用户输入的数据符合预期的格式和要求,从而提高应用程序的安全性。

以下是一些常见的用法:

使用 filter_var() 过滤标量值:
$email = "user@example.com";

// 使用 FILTER_VALIDATE_EMAIL 过滤和验证电子邮件地址
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo "Valid email address.";
} else {
    echo "Invalid email address.";
}

使用 filter_input() 从输入获取并过滤值:
// 假设你期望从 GET 请求中获取一个整数
$userID = filter_input(INPUT_GET, 'user_id', FILTER_VALIDATE_INT);

if ($userID !== null && $userID !== false) {
    echo "Valid user ID: $userID";
} else {
    echo "Invalid user ID";
}

使用 filter_input_array() 处理多个输入:
// 定义输入规则
$filters = array(
    'username' => FILTER_SANITIZE_STRING,
    'email' => FILTER_VALIDATE_EMAIL,
    'age' => array(
        'filter' => FILTER_VALIDATE_INT,
        'options' => array('min_range' => 1, 'max_range' => 120)
    ),
);

// 获取并过滤输入
$input = filter_input_array(INPUT_POST, $filters);

// 检查是否有无效输入
if (in_array(false, $input, true)) {
    echo "Invalid input detected.";
} else {
    echo "Valid input: " . print_r($input, true);
}

使用 filter_var_array() 处理多个值:
// 定义一组值
$values = array(
    'email' => 'user@example.com',
    'age' => 25,
    'url' => 'http://www.example.com'
);

// 定义过滤规则
$filters = array(
    'email' => FILTER_VALIDATE_EMAIL,
    'age' => array(
        'filter' => FILTER_VALIDATE_INT,
        'options' => array('min_range' => 1, 'max_range' => 120)
    ),
    'url' => FILTER_VALIDATE_URL
);

// 获取并过滤值
$result = filter_var_array($values, $filters);

// 检查是否有无效值
if (in_array(false, $result, true)) {
    echo "Invalid value detected.";
} else {
    echo "Valid values: " . print_r($result, true);
}

在上述示例中,FILTER_SANITIZE_STRING 用于删除字符串中的非法字符,FILTER_VALIDATE_EMAIL 用于验证电子邮件地址,FILTER_VALIDATE_INT 用于验证整数,并可以设置范围。其他的过滤器和选项也可以根据你的需求进行使用。

确保在实际应用中结合其他安全性措施,比如预处理语句,以保护你的应用免受 SQL 注入、XSS 等攻击。


转载请注明出处:http://www.pingtaimeng.com/article/detail/13856/PHP