表单验证类(未精简)
<?php /**************** * verify.class.php * 表单验证类 *****************/ class Verify{ private $params; public function __construct($input=array()){ $this->init($input); } /* * @function 初始化参数 * @param array $input表单域名数组 示例array("userName","pwd") * @return */ public function init($input=array()){ $this->params=$input; } /** * @function 检测所有提交数据是否通过验证 * @param array $input 二维数组 示例: array(array("name"=> ,"value"=>,"type"=>,"format"=>,"allow_arr"=>,"maxLength"=>,"mixLength"=>,"isEmpty"=>),) * @return boolean true|false */ public function checkAll($input){ if(is_array($input)){ $flag=true; foreach($input as $key=>$value){ if(!isset($this->params[$value["name"]])){ continue; } $value["allow_arr"]=(isset($value["allow_arr"]) && is_array($value["allow_arr"])) ? $value["allow_arr"] : array(); $value["maxLength"]=isset($value["maxLength"]) ? $value["maxLength"] : 0; $value["mixLength"]=isset($value["mixLength"]) ? $value["mixLength"] : 0; $value["isEmpty"]=isset($value["isEmpty"]) ? $value["isEmpty"] : 0; $result=$this->inputCheck($value["name"],$value["value"],$value["type"],$value["format"],$value["allow_arr"],$value["maxLength"],$value["mixLength"],$value["isEmpty"]); if($result===false){ $flag=false; echo "表单域名称为".$value["name"]."的值".$value["value"]."未通过验证"; break; } } return $flag; } } /* * @function 输入参数验证是否通过 * @params string $name 表单名 * mixed $value 表单名对应的值 * string $type 变量类型 必须是基础数据类型int,bool,double,string。 * string $format 数据格式类型 email,pwd等 * array $allow_arr 允许范围 * int $maxLength 最大长度 * int $mixLength 最小长度 * int $isEmpty 是否允许为空 * @return boolean true|false */ public function inputCheck($name,$value,$type,$format,$allow_arr=array(),$maxLength=0,$mixLength=0,$isEmpty=0){ //检查变量是否存在 if(!isset($this->params[$name])){ return false; } //第二步 判断变量是否有值 if(empty($value)){ if($isEmpty==0){ return false; } else{ return true; } } //第三步 判断变量类型是否 if($this->getParameterType($value)!==$type){ return false; } //第四步 如果是字符串判断其是否在指定长度内 if(is_string($value) && (strlen(trim($value))<$mixLength || strlen(trim($value))>$maxLength)){ return false; } //第四步 如果是选择项即allow_arr数组不为空,是否在数组范围内 if(!empty($allow_arr) && !in_array($value,$allow_arr)){ return false; } //第五步 进入正则表达式验证 return $this->matchValue($value,$format); } /* * @function 获得参数的数据类型 * @params mixed $value参数 * @return string $var_type数据类型 */ public function getParameterType($value){ $var_type=""; if(is_int($value)){ $var_type="int"; } else if(is_bool($value)){ $var_type="bool"; } else if(is_double($value)){ $var_type="double"; } else if(is_string($value)){ $var_type="string"; } else{ $var_type="unkown"; } return $var_type; } /* * @function 使用正则表达式检验值 * @params mixed $value参数,string $format数据格式类型 * @return boolean true|false */ public function matchValue($value,$format){ switch($format){ case "integer"://整数 return is_int($value); break; case "account"://账号 //由字母a~z(不区分大小写)、数字0~9、下划线组成只能以字母开头和(数字或字母)结尾 用户名长度为8~18个字符 return preg_match("/^[a-za-z]{1}[a-za-z0-9|_]{6-16}[a-za-z0-9]{1}$/",$value); break; case "password"://密码 //由字母a~z(不区分大小写)、数字0~9、下划线组成只能以字母开头和(数字或字母)结尾 用户名长度为6~14个字符 return preg_match("/^[a-zA-Z]{1}[a-za-z0-9|_]{4-12}[a-za-z0-9]{1}$/",$value); default: break; } } } //测试代码 $cols=array("account"); $verify=new Verify($cols); $inputCheck=array(); $inputCheck[]=array("name"=>"account","value"=>$account,"type"=>"string","format"=>"account","maxLength"=>18,"mixLength"=>8); $rs=$verify->checkAll($inputCheck); ?>
本人菜鸟一个,写了一个简单的表单验证类,各位大大及老师帮我看看,还有哪些不足或遗漏的地方,希望指出,谢谢!