1.过滤单个变量 filter_var()
//filter_var(要过滤的变量,过滤器常量);
//过滤满十八周岁,小于60岁周岁的
$options = ['options'=>['min_range'=>18,'max_range'=>60]];
$age = '50';
var_dump(filter_var($age,FILTER_VALIDATE_INT,$options));
echo '<hr>';
$age = '120';
var_dump(filter_var($age,FILTER_VALIDATE_INT,$options));
// 过滤正确邮箱
$email = 'admin@php.cn';
var_dump(filter_var($email,FILTER_VALIDATE_EMAIL));
2.验证多个变量 filter_var_array()
//验证多个变量值是不是int类型
$a = 10;
$b = '90';
$c = "nihao";
$arr = [$a,$b,$c];
var_dump(filter_var_array($arr,FILTER_VALIDATE_INT));
3. 验证外部变量
通常通过http请求发送过来的值,如表单,get,post
filter_input(输入类型get/post,变量名,过滤器,参数)
//获取get请求中参数id的值
echo 'id = ' . $_GET['id'];
echo '<hr>';
//验证get请求中参数id的值
$options = ['options'=>['min_range'=>1]];
var_dump(filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT,$options));
验证多个外部变量
$args = [
'username'=> FILTER_SANITIZE_STRING, //去除标签以及特殊字符:`strip_tags()`
'email'=>FILTER_VALIDATE_EMAIL,
'age'=>['filter'=>FILTER_VALIDATE_INT,'options'=>['min_range'=>18,'max_range'=>60]],
'blog'=>FILTER_VALIDATE_URL
];
var_dump(filter_input_array(INPUT_GET,$args));
变量过滤器
过滤器用于验证和过滤来自非安全来源的外部数据,
- 外部数据来源:
序号 |
数据来源 |
描述 |
1 |
表单 |
来自表音的用户输入数据 |
2 |
Cookies |
来自浏览器中的 cookie |
3 |
服务器变量 |
防止伪装的合法访问 |
4 |
Web 服务数据 |
Web 请求的数据 |
5 |
数据库查询结果 |
数据表中的数据并不可信 |
常用的过滤器函数:
序号 |
函数 |
描述 |
1 |
filter_list() |
|
2 |
filter_id() |
|
3 |
filter_var() |
过滤单个变量 |
4 |
filter_var_array() |
过滤多个变量 |
5 |
filter_has_var() |
检测是否存在某个外部变量 |
6 |
filter_input() |
过滤单个外部变量 |
7 |
filter_input_array() |
过滤多个外部变量 |
外部变量类型: INPUT_GET
, INPUT_POST
, INPUT_COOKIE
, INPUT_SERVER
, INPUT_ENV
过滤器主要分为二类: 验证过滤器, 清理过滤器
验证过滤器常量
验证过滤器: 又叫”验证器”, 主要用于数据的类型和格式验证
序号 |
过滤器函数 |
描述 |
1 |
FILTER_VALIDATE_INT |
验证整数 |
2 |
FILTER_VALIDATE_FLOAT |
浮点点验证 |
3 |
FILTER_VALIDATE_BOOLEAN |
验证布尔项 |
4 |
FILTER_VALIDATE_EMAIL |
验证邮箱 |
5 |
FILTER_VALIDATE_URL |
验证 URL 地址 |
6 |
FILTER_VALIDATE_IP |
验证 IP 地址 |
7 |
FILTER_VALIDATE_REGEXP |
正则验证 |
FILTER_VALIDATE_BOOLEAN
: 布尔选项的返回值类型
序号 |
返回值 |
描述 |
1 |
true |
“1”, “true”, “on” 和 “yes” |
2 |
false |
“0”, “false”, “off”, “no”, “” |
3 |
null |
除以上情形外 |
清理过滤器常量
清理过滤器: 去掉非法字符,仅保留指定内容
序号 |
过滤器函数 |
描述 |
1 |
FILTER_UNSAFE_RAW |
保持原始数据 |
2 |
FILTER CALLBACK |
自定义函数过滤数据 |
3 |
FILTER_SANITIZE_STRING |
去除标签以及特殊字符:strip_tags() |
4 |
FILTER_SANITIZE_STRIPPED |
“string” 过滤器别名 |
5 |
FILTER_SANITIZE_ENCODED |
URL-encode 字符串,去除或编码特殊字符 |
6 |
FILTER_SANITIZE_SPECIAL_CHARS |
HTML 转义字符, 等价于 htmlspecialchars() |
7 |
FILTER_SANITIZE_EMAIL |
仅保留邮箱地址的合法字符 |
8 |
FILTER_SANITIZE_URL |
仅保留合法的 URL, 必须从协议开始http/https |
9 |
FILTER_SANITIZE_NUMBER_INT |
仅保留合法的数字和正负号+- |
10 |
FILTER_SANITIZE_NUMBER_FLOAT |
仅保留合法的数字和正负号+- 以及指数 .,eE |
11 |
FILTER_SANITIZE_MAGIC_QUOTES |
等价于函数: addslashes() |