php的过滤器功能
1.简介
PHP 过滤器用于验证和过滤来自非安全来源的数据,比如用户的输入。
1.1 外部数据:
- 来自表单的输入数据
- Cookies
- Web services data
- 服务器变量
- 数据库查询结果
1.2 验证和纠错
FILTERS, 该扩展可以用来验证(validation)和纠错(sanitization);
验证(validation)主要用来检查数据是不是符合特定条件, 例如: 当传入 FILTER_VALIDATE_EMAIL 时, 它将检查该邮件地址是否有效, 当发现不符合规范时, 不会进行纠错处理
纠错(sanitization)将会对数据进行处理, 将不符合规范的字符进行转换或移除, 例如: 当传入 FILTER_SANITIZE_EMAIL 时, 它将会处理邮件地址所包含不符合规范的字符,
但不会去检查该邮件地址是否有效。
2.过滤器相关函数
2.1 filter_var(); 通过一个指定的过滤器来过滤单一的变量
// 1. 过滤器
$int = '123';
$res = filter_var($int,FILTER_VALIDATE_INT); var_dump($res); echo '<hr/>'; // 2. 过滤选项
$int_options = [
'options' => [
'min_range' => 0,
'max_range' => 256
]
];
$filter = filter_var($int,FILTER_VALIDATE_INT,$int_options); var_dump($filter); echo '<hr/>';
// 3.filter callback 函数
function convert_space( $str ){
return str_replace('_','.',$str);
}
$str = 'www_myvic_con!';
echo filter_var($str,FILTER_CALLBACK,['options'=>'convert_space']);
echo '<br/>';
2.2 filter_var_array() 函数获取多个变量,并进行过滤
// filter_var_array()
$arr = [
'name' => 'vic',
'age' =>30,
'email' =>'vic@qq.com'
]; $filters = [
'name' => [
'filter' => FILTER_CALLBACK,
'flags' => FILTER_FORCE_ARRAY,
'options' =>'ucwords'
],
'age' => [
'filter' => FILTER_VALIDATE_INT,
'options' => [
'min_range' => 1,
'max_range' => 120
]
],
'email' => FILTER_VALIDATE_EMAIL ];
var_dump(filter_var_array($arr,$filters));
2.3 filter_input() 函数从脚本外部获取输入(比如表单输入),并进行过滤。
该函数可从各种来源获取输入:
- INPUT_GET
- INPUT_POST
- INPUT_COOKIE
- INPUT_ENV
- INPUT_SERVER
- INPUT_SESSION(尚未推行)
- INPUT_REQUEST(尚未推行)
filter_input(INPUT_POST,'email',FILTER_VALIDATE_EMAIL)
2.4 filter_input_array() 函数从脚本外部获取多项输入(比如表单输入),并进行过滤。同filter_input()
$filters = array
(
"name" => array
(
"filter"=>FILTER_SANITIZE_STRING
),
"age" => array
(
"filter"=>FILTER_VALIDATE_INT,
'flags' =>FILTER_REQUIRE_ARRAY, //需求的值是个数组
"options"=>array
(
"min_range"=>1,
"max_range"=>120
)
),
"email"=> FILTER_VALIDATE_EMAIL
);
$result = filter_input_array(INPUT_GET, $filters);
var_dump($result);
2.5 filter_has_var()
filter_has_var() 函数检查是否存在指定输入类型的变量。
如果成功则返回 TRUE,如果失败则返回 FALSE。
可能的输入类型:
- INPUT_GET
- INPUT_POST
- INPUT_COOKIE
- INPUT_SERVER
- INPUT_ENV
$filter = filter_has_var(INPUT_GET, 'email');
参考资料:http://php.net/manual/zh/filter.filters.php
php的过滤器功能的更多相关文章
- Vue2.0实现1.0的搜索过滤器功能
Vue2.0删除了很多1.0的比较实用的过滤器,如filterBy,orderBy.官方文档给了通过计算属性实现1.0搜索过滤器功能,自己又加入了大小写通用检索功能,比较简单,学一下. <bod ...
- Java防止SQL注入2(通过filter过滤器功能进行拦截)
首先说明一点,这个过滤器拦截其实是不靠谱的,比如说我的一篇文章是介绍sql注入的,或者评论的内容是有关sql的,那会过滤掉:且如果每个页面都经过这个过滤器,那么效率也是非常低的. 如果是要SQL注入拦 ...
- bs的过滤器功能例子
第一步 #src链接要符合下面要求,这里返回是 false or true def valid_img(src): return src.endswith('jpg') and 'img.jandan ...
- 利用File类过滤器列出目录下的指定目录或文件
需求:列出d盘下的全部txt文件 实现方法:利用File类的过滤器功能 package com.test.common.util; import java.io.File; import java.i ...
- Java程序员从笨鸟到菜鸟之(二十一)java过滤器和监听器详解 【转】
过滤器 1.Filter工作原理(执行流程) 当客户端发出Web资源的请求时,Web服务器根据应用程序配置文件设置的过滤规则进行检查,若客户请求满足过滤规则,则对客户请求/响应进行拦截,对请求头和请 ...
- php 拓展 Filter 过滤器
简介 Filter,它的作用就和他的名字一样——过滤.过滤规则成为过滤器,Filter内置了多个常用过滤器,根据过滤器功能的不 同,可以分成净化过滤器(Sanitization)和验证过滤 ...
- 过滤器(filter)实现
花了2天时间,实现了过滤器功能,针对数据进行筛选,包含以下7个过滤器: 'date','currency','number','tolowercase','touppercase','orderBy' ...
- servlet过滤器简化版
什么是过滤器 在struts2 中集成了过滤器,并可以根据需要选择合适自己的过滤器进行配置 , 过滤器:是基于函数回调的,运用java中的反射机制工作在struts2只能对于action起作用,在se ...
- ASP.NET没有魔法——ASP.NET MVC 过滤器(Filter)
上一篇文章介绍了使用Authorize特性实现了ASP.NET MVC中针对Controller或者Action的授权功能,实际上这个特性是MVC功能的一部分,被称为过滤器(Filter),它是一种面 ...
随机推荐
- Pseudoforest(伪最大生成树)
Pseudoforest Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total ...
- IdentityServer4 指定角色授权(Authorize(Roles="admin"))
1. 业务场景 IdentityServer4 授权配置Client中的AllowedScopes,设置的是具体的 API 站点名字,也就是使用方设置的ApiName,示例代码: //授权中心配置 n ...
- js获取浏览器版本
获取火狐,谷歌,ie,常见浏览器的方法 function myBrowser(){ var userAgent = navigator.userAgent, rMsie = /(msie\s|trid ...
- display:none和visibility:hidden区别
<!-- display:none和visible:hidden都能把网页上某个元素隐藏起来,但两者有区别: --> <!-- display:none 不为被隐藏的对象保留其物理空 ...
- Web前端框架与类库的思考【转】
前端框架的理解误区 网站的价值在于它能为用户提供什么价值,在于网站能做什么,而不在于它是怎么做的,所以在网站还很小的时候就去追求网站的架构框架是舍本逐末,得不偿失的.前端框架同理,如果是一个简单的页面 ...
- threejs 组成的3d管道,寻最短路径问题
threejs 里面的3d管道的每个节点ID是唯一的,且对应x,y,z坐标.那么当需要从A点到B点的时候,可能出现有多条路径可走,此时便需要求出最短行走路径,因此用到一个寻路径算法.我们将问题简化如下 ...
- ABP框架个人开发实战(1)_环境搭建
前言 之前关注ABP框架有一阵子了,一直没有潜下心来实际研究一下.最近想自己建站,以后有自己的功能开发项目,可以在自己的站点上开发,并一步步的完善,所以找个比较好用的框架迫在眉睫,选来选去,决定用AB ...
- hdu 6231 -- K-th Number(二分+尺取)
题目链接 Problem Description Alice are given an array A[1..N] with N numbers. Now Alice want to build an ...
- ContextLoaderListener - 运行原理
基本概念: servletContext:http://blog.csdn.net/yjw757174266/article/details/45072975 1. 使用ContextLoaderL ...
- pandas基本介绍-【老鱼学pandas】
前面我们学习了numpy,现在我们来学习一下pandas. Python Data Analysis Library 或 pandas 主要用于处理类似excel一样的数据格式,其中有表头.数据序列号 ...