php filter 安全过滤函数
转自:http://www.blags.org/archives/741.html
php 利用filter 扩展编写的参数处理静态类,欢迎使用。
希望大家看得开心,用得放心。
<?php
/**
* @参数验证函数
* @method:
* @license http://www.blags.org/
* @created:2011年07月02日 11时00分
* @copyright 1997-2011 The Martin Group
* @author Martin <martin@blags.org>
* */
abstract class CFilter
{
/**
* 类型
* @var array
*/
public static $varType = array(
'GET'=> INPUT_GET,
'POST'=> INPUT_POST,
'COOKIE'=> INPUT_COOKIE,
'SERVER'=> INPUT_SERVER,
'ENV'=> INPUT_ENV
);
public static $filterType = array(
'STRING'=>FILTER_SANITIZE_STRING,
'INT'=>FILTER_VALIDATE_INT,
'BOOLEAN'=>FILTER_VALIDATE_BOOLEAN,
'FLOAT'=>FILTER_VALIDATE_FLOAT,
'REGEXP'=>FILTER_VALIDATE_REGEXP,
'URL'=>FILTER_VALIDATE_URL,
'EMAIL'=>FILTER_VALIDATE_EMAIL,
'IP'=>FILTER_VALIDATE_IP,
); /**
* 支持过滤列表
*/
private static function lists()
{
return filter_list();
} /**
* 验证类型
* @param string $type
*/
public static function filterType($type)
{
$filter_list = self::lists();
return array_search($type,$filter_list) !== false ? true : false;
} /**
*
* @param $setVarType
*/
private static function getVarType($setVarType)
{
$setVarType = strtoupper($setVarType);
return isset(self::$varType[$setVarType]) ? self::$varType[$setVarType] : null;
} /**
*
* @param string $setFilterType
*/
private static function getFilterType($setFilterType)
{
$setFilterType = strtoupper($setFilterType);
return isset(self::$filterType[$setFilterType]) ? self::$filterType[$setFilterType] : null;
} /**
* 检测参数是否存在
* @param string $setVarType
* @param string $varName
*/
public static function VarExists($setVarType,$varName)
{
$FilterVarType = self::getVarType($setVarType);
if (is_null($FilterVarType))
return false;
return filter_has_var(self::$varType[$FilterVarType], $varName);
} /**
*
* @param string $setVarType
* @param string $varName
* @param string $filterType
*/
public static function FilterInput($setVarType, $varName, $filterType = 'INT')
{
$FilterVarType = self::getVarType($setVarType);
$filterType = self::getFilterType($filterType);
if (is_null($FilterVarType) || is_null($filterType))
return false;
return filter_input($FilterVarType, $varName, $filterType);
} /**
* 验证变量
* @param string $var
* @param string $filterType
*/
public static function FilterVar($var,$filterType)
{
$filterType = self::getFilterType($filterType);
return filter_var($var, $filterType);
} /**
* 字符串
* @param string $var
*/
public static function String($var)
{
return self::FilterVar($var,'STRING');
} public static function Int($var)
{
return self::FilterVar($var,'INT');
} public static function Boolean($var)
{
return self::FilterVar($var,'INT');
} public static function Float($var)
{
return self::FilterVar($var,'FLOAT');
} /**
*
* @param string $var
* @param array $option array("options"=>array("regexp"=>"/^M(.*)/"))
*/
public static function Regexp($var,$option)
{
$filterType = self::getFilterType($filterType);
return filter_var($var, $filterType, $option);
} public static function Url($var)
{
return self::FilterVar($var,'URL');
} public static function Email($var)
{
return self::FilterVar($var,'EMAIL');
} public static function Ip($var)
{
return self::FilterVar($var,'IP');
}
}
php filter 安全过滤函数的更多相关文章
- Filter 数组过滤函数精解示例
'************************************************************************* '**模 块 名:Filter 数组过滤函数精解示 ...
- 过滤函数 filter
filter(lambda x:x.endswith('居'),house_type_list) 过滤函数,作用就是将“以‘居’结尾的字段都过滤出来,其它的字段都删除掉.”
- 匿名函数lambda,过滤函数filter,映射类型map
匿名函数lambda, 作用是不用定义函数,用完之后会自动被删掉,在使用执行脚本的时候,使用lambda就可以省下定义函数的过程,简化代码的可读性. 格式是 例子g=lambda x,y:x+y g( ...
- map内置函数、lambda表达式、快捷生成想要的列表、filter内置函数
map函数 语法 map(function, iterable, ...) 参数 function -- 函数,有两个参数 iterable ...
- filter与map函数
·filter()函数filter()函数包括两个参数,分别是function和list.该函数根据function参数返回的结果是否为真来过滤list参数中的项,最后返回一个新列表,如下例所示:&g ...
- django-admin 仿写stark组件action,filter筛选过滤,search查询
写在StandLi里面的方法都是通过ModelSubject这个类里面的stand_li方法,在它里面用StandLi这个类实例化出来一个对象,这个实例化出来的对象把数据传给前端HTML模板进行渲染, ...
- python_08 函数式编程、高阶函数、map、filter、reduce函数、内置函数
函数式编程 编程方法论: 1.面向过程 找到解决问题的入口,按照一个固定的流程去模拟解决问题的流程 (1).搜索目标,用户输入(配偶要求),按照要求到数据结构内检索合适的任务 (2)表白,表白成功进入 ...
- 大数据处理算法--Bloom Filter布隆过滤
1. Bloom-Filter算法简介 Bloom-Filter,即布隆过滤器,1970年由Bloom中提出.它可以用于检索一个元素是否在一个集合中. Bloom Filter(BF)是一种空间效率很 ...
- 数组方法map(映射),reduce(规约),foreach(遍历),filter(过滤)
数组方法map(映射),reduce(规约),foreach(遍历),filter(过滤) map()方法返回一个由原数组中每一个元素调用一个指定方法后返回的新数组 reduce()方法接受一个函数作 ...
随机推荐
- 这道js面试题号称99%的人会做错
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 邁向IT專家成功之路的三十則鐵律 鐵律十三:IT人理財之道-知足
身為一位專業的IT人士,工作上不僅要做到滿足興趣與專業熱忱,當然也要做到能夠滿足荷包.現代人賺錢不是問題,但花錢卻出了很大問題,親愛的IT朋友們,請不要將您辛苦賺來的錢花在想要的東西上,實際上需要的卻 ...
- 【bootstrap】bootstrap中的tooltip的使用
先看看效果图:[当光标放在下面这个时间搜索框上时,显示一段文字:搜索时间段中的流水信息] 这样的效果,怎么实现呢? 很简单 1.引入jQuery.js和bootstrap的js和css 2.给想要有t ...
- Android开发者选项——Gpu呈现模式分析
对于Android用户来说,无论你用的什么品牌的手机,在开发者选项中都能发现“玄学曲线”的开关,之所以称其为玄学曲线,还是因为它被很多网友用于测试一个说不清道不明的东西——流畅度.到底多流畅才叫流畅, ...
- Android View 测量流程(Measure)完全解析
前言 上一篇文章,笔者主要讲述了DecorView以及ViewRootImpl相关的作用,这里回顾一下上一章所说的内容:DecorView是视图的顶级View,我们添加的布局文件是它的一个子布局,而V ...
- 查看java中的线程个数名称
查看java中的线程个数名称 package com.stono.thread2; import java.lang.management.ManagementFactory; import java ...
- Qt跨平台的一个例程
我的同事penk在近期北京的Hackathon展示了一个在多平台的例程. 非常多开发人员对这个挺感兴趣的. 今天我就把这个资源介绍给大家. 这是同一个用Qt写的应用.能够同一时候在Ubuntu Des ...
- mysql 数据迁移时遇到 外键限制
禁用外键约束 SET FOREIGN_KEY_CHECKS=0; ......数据迁移........ 启动外键约束 SET FOREIGN_KEY_CHECKS=1;
- c++程序猿经典面试题(2)
1.以下程序的输出结果是? #include<stdio.h> main(){ int b=3; int arr[]={6,7,8,9,10}; int *ptr=arr; *(ptr++ ...
- Android MPAndroidCharts 框架 画可滑动查看的直方图
1.由于公司项目的需求,所以花了1.2天研究 MPAndroidCharts框架 .可是发现好多博客对我都没得帮助.浪费非常多时间在百度上.不得不说google 真是比百度强太多了. 要求:统计出56 ...