/**
* 文件上传
* @param $file 要上传的文件
* @param $size 大小设置
* @param $ext 文件类型
* @return bool 是否上传成功
*/
function imgUpload($file, $size, $ext){
$info = $file->validate(['size'=>$size,'ext'=>$ext])->move(ROOT_PATH . 'public/static/' . DS . 'uploads');
if($info){
$filename=$info->getSaveName();
$image=\think\Image::open("static/uploads/".$filename);
// 按照原图的比例生成一个最大为200*200的缩略图并保存为thumb.png
$image->thumb(200, 200)->save("static/uploads/".$filename);
return $filename;
}else{
return false;
}
}

/**
* 判断类型
* @param $num 需要判断是那种类型
*/
function judgeType($param,$type){
if($type=="array"&&is_array($param)){
return returnData(1,"success");

}else if($type=="string"&&is_string($param)){

return returnData(1,"success");

}else if($type=="int"&&is_int($param)){

return returnData(1,"success");

}else if($type=="float"&&is_float($param)){
return returnData(1,"success");
}
return returnData(0,"类型不正确");
}
/**
* 判断字段长度是否满足条件
* @param $str 要判断的字段
* @param $len 长度
*/
function judgeLen($str, $len){
$allLen=mb_strlen($str,'utf8');
if($allLen>$len){
return returnData(0,"长度过长");
}
return returnData(1,"");
}

/**
* 过滤危险字符
* @param $str
*/
function filterDangerChars($str){

foreach(config("dangerChars") as $item){

if(mb_strpos($str,$item,0,"utf8") !==false){
return returnData(0,"存在敏感字符");
break;
}
}
return returnData(1,"");
}

/**
* 基础过滤
* @param $param 字段
* @param $type 类型
* @param $len 长度
*/
function filterBase($param, $type, $len){

if(!isset($param)){
return returnData(0,"字段为空");
}

$typeResult=judgeType($param, $type); //判断类型是否一致
if($typeResult["code"]==0) return $typeResult;
$lenResult=judgeLen($param,$len); //判断长度是否满足要求
if($lenResult["code"]==0) return $lenResult;
$dangerResult=filterDangerChars($param); //是否包含非法字符

if($dangerResult["code"]==0) return $dangerResult;

return returnData(1,"success");

}

/**
* sql防注入 进行转义
* @param $param 需要过滤的字段
* @param bool|true $addslashes true---通过addslashes 转义,false---替换一些sql中的关键字
* @param string $type 转成什么类型
* @return int|mixed|string
*/
function filterSql($param, $addslashes=true, $type=""){
if($addslashes){
$param = addslashes($param);
}else{
$param=paramReplace($param);
}
if($type=="int"){
$param=changeType($param,"int");
}

return $param;
}

/**
* 强制转换成指定类型
* @param $param 需要转换的字段
* @param $type 需要转换的类型
* @return array|float|int|string 返回的数据
*/
function changeType($param, $type){
if($type=="int"){
$param = intval($param);
}else if($type="float"){
$param = floatval($param);
}else if($type=="string"){
$param = strval($param);
}else if($type=="array"){
$param=array($param);
}
return $param;
}

/**
* 过滤一些特殊的sql语句中的关键字
* @param $str
* @return mixed
*/
function paramReplace($str)
{
$str = str_replace(" ","",$str);
$str = str_replace("\n","",$str);
$str = str_replace("\r","",$str);
$str = str_replace("'","",$str);
$str = str_replace('"',"",$str);
$str = str_replace("or","",$str);
$str = str_replace("and","",$str);
$str = str_replace("#","",$str);
$str = str_replace("\\","",$str);
$str = str_replace("null","",$str);
$str = str_replace(">","",$str);
$str = str_replace("<","",$str);
$str = str_replace("=","",$str);
$str = str_replace("char","",$str);
$str = str_replace("order","",$str);
$str = str_replace("select","",$str);
$str = str_replace("create","",$str);
$str = str_replace("delete","",$str);
$str = str_replace("insert","",$str);
$str = str_replace("execute","",$str);
$str = str_replace("update","",$str);
$str = str_replace("count","",$str);
return $str;
}

/**
* 为了避免xss漏洞 把指定的标签进行过滤 (strip_tags 去掉全部)
* @param $param 要过滤的字段 $str="dfdf<b>dfdf</b><script>alert('1111');<em>斜体</em></script>";
* @param $tags 指定哪些标签需要过滤
* @return mixed
*/
function filterXSS($param, $tags){
foreach($tags as $tag) {
$pattern = '/\<.*?'.$tag.'.*?\>.*\<(\/)?'.$tag.'.*?\>/i';
//正则过滤指定标签
$param= preg_replace($pattern, '', $param);
}
return $param;
}

/**
* 为了避免xss漏洞,把标签转为字符串
* @param $param 需要把标签转成字符串的的字段
*/
function filterXSS1($param){
$param = htmlspecialchars($param);
return $param;
}

/**
*
*/
function filterUpload($file,$type){
if($type=="img"){
if(in_array($file,config("img"))){
return returnData(1,"");
}
}
return returnData(0,"类型不正确");
}

/**
* @param $code 0---error 1-success
* @param $data
* @return array 返回的是数组
*/
function returnData($code, $data){
return array(
"code"=>$code,
"data"=>$data
);
}

php常见验证的更多相关文章

  1. iis配置asp.net常见验证失败问题解决方案

    很多朋友在用IIS6架网站的时候遇到不少问题,而这些问题有些在过去的IIS5里面就遇到过,有些是新出来的,俺忙活了一下午,做 了很多次试验,结合以前的排错经验,做出了这个总结,希望能给大家帮上忙:) ...

  2. c# 常见验证邮箱、电话号码、日期等格式

    #region 验证邮箱验证邮箱 /**//// <summary> /// 验证邮箱 /// </summary> /// <param name="sour ...

  3. java常见验证邮箱、电话号码、日期等格式

    package besttone.utils; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 90%的验证 ...

  4. JS的一些常见验证代码

    1//檢查空串  2function isEmpty(str){  3 if((str == null)||(str.length == 0)) return (true);  4 else retu ...

  5. verify.js使用验证插件使用

    github:https://github.com/52fhy/verify.js 首先引入js,最好拷贝verify整个目录,因为里面有图标. <script src="verify ...

  6. 表单验证插件 jquery.validata 使用方法

    参考资料:http://www.runoob.com/jquery/jquery-plugin-validate.html 下载地址 jquery.validate插件的文档地址http://docs ...

  7. 开始VS 2012 中LightSwitch系列的第1部分:表中有什么?描述你的数据

    [原文发表地址]  Beginning LightSwitch in VS 2012 Part 1: What’s in a Table? Describing Your Data [原文发表时间]  ...

  8. 开始VS 2012中LightSwitch系列的第5部分:我可以使用用户权限来控制访问权吗?

    [原文发表地址]  Beginning LightSwitch in VS 2012 Part 5: May I? Controlling Access with User Permissions [ ...

  9. .net 常用正则表达式

    Net中正则表达式的简单使用方法及常见验证判断 判断字符串是只是数字我们可以这样写:return new System.Text.RegularExpressions.Regex(@"^([ ...

随机推荐

  1. 洛谷P3455 [POI2007]ZAP-Queries(莫比乌斯反演)

    传送门 设$$f(k)=\sum_{i=1}^{a}\sum_{j=1}^{b}[gcd(i,j)=k]$$ $$g(n)=\sum_{n|k}f(k)=\lfloor\frac{a}{n}\rflo ...

  2. 程序员收藏必看系列:深度解析MySOL优化(一)

    说起MySQL的查询优化,相信大家收藏了一堆奇技淫巧:不能使用SELECT *.不使用NULL字段.合理创建索引.为字段选择合适的数据类型….. 你是否真的理解这些优化技巧?是否理解其背后的工作原理? ...

  3. 剑指Offer的学习笔记(C#篇)-- 栈的压入、弹出序列

    题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压 ...

  4. 洛谷 P1434 [SHOI2002]滑雪 解题报告

    这题方法有很多, 这里介绍2种: 方法1 很容易想到搜索, bfs或dfs应该都可以, 就不放代码了: 方法2 这题还可以用 dp 来做. 做法:先将每个点按照高度从小到大排序,因为大的点只能向小的点 ...

  5. JS高级学习历程-5

    [闭包] 定义:闭包就是一个函数 条件:一个函数去嵌套另外一个函数,里边的函数就是闭包 function  f1(){ function f2(){ } } 特点:闭包函数有权访问父级环境的变量信息.

  6. NSPhotoLibraryAddUsageDescription解决办法

    图片并保存到本地的功能,一点发现闪退了.发现 Xcode 报以下错误: The app's Info.plist must contain an NSPhotoLibraryAddUsageDescr ...

  7. Win7系统控制面板“设备和打印机”打不开解决办法

    Win7系统控制面板“设备和打印机”打不开解决办法, 打开时显示界面如下: 可能原因: 1.设备和打印机对应的驱动故障引起无法打开的问题 2.服务未开启 3.系统文件损坏 解决方法: 1.更新驱动.可 ...

  8. C# string.Empty

    在C#中,如果赋值一个字符串为空白字符串,我们一般会用“”的形式对字符串进行赋值操作,其实在C#的字符串类String类中,有个专门的常量string.Empty来代表空字符串,可直接在赋值的时候使用 ...

  9. Django之用户认证—auth模块

    用户认知———auth模块 目录: auth模块 User对象 实例 扩展默认的auth_user表 - 创建超级用户 - python3 manager.py createsuperuser - 认 ...

  10. c# 字符串的首字母大写转换 方法

    方法1: s.Substring(0,1).ToUpper()+s.Substring(1);  方法2: s = System.Threading.Thread.CurrentThread.Curr ...