php用户输入fiter函数的校验:
创新互联从2013年成立,是专业互联网技术服务公司,拥有项目成都网站建设、成都做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元竹溪做网站,已为上家服务,为竹溪各地企业和个人服务,联系电话:13518219792
代码如下:
header("Content-type: text/html; charset=utf-8");
function filter_param($paramArr, $filterArr)
{
$res = filter_var_array($paramArr, $filterArr); //参数不合法-flase, 没传参数-null
foreach ($res as $key=>$val) {
//再判断未传的参数。
if (is_null($val)) {
//1.如果是必填项
if ($filterArr[$key]['required']) {
if (isset($filterArr[$key]['options']['default'])) {
//1.1如果有default值,则设置为default值。
$res[$key] = $filterArr[$key]['options']['default'];
} else {
//1.2如果没有default值,抛出异常。
return [false,"参数 $key 为必填!"];
}
} else {
//$res[$key]=''; //这里是默认把null值改为空值。是否有必要?
return [false,"缺少参数 $key !"];
}
}
}
//如果有验证失败的,抛出异常。
if (false === $val) {
return [false,"参数 $key 格式非法!"];
}
return [true,"验证通过"];
}
//每个model里,都写个checkParam函数,用来配置验证的规则。
function checkParam($arrInput)
{
//1.先检查catId
$filter = array(
//数字类型的,必填。只允许 0-1。
"catId" => array(
"required"=>1,
"filter"=>FILTER_VALIDATE_INT,
"options"=>array(
"min_range" =>0,
"max_range" =>1,
)
),
//字符串类型的,必填。长度大于1。
"title" => array(
"required"=>1,
"filter"=>FILTER_VALIDATE_REGEXP,
"options"=>array(
"regexp" =>"/^.+/",
)
),
//字符串类型的,非必填。但要是填了的话,则格式必须为email。
"email" => array(
"filter"=>FILTER_VALIDATE_EMAIL,
),
"ip" => array(
"filter"=>FILTER_VALIDATE_IP,
),
);
return filter_param($arrInput, $filter) ;
}
//比如这个是输入的参数。可以试着修改这里看看效果。
$arrInput=array(
'catId'=>1,
'title'=>'xx',
'ip'=>'xxxxxx.com',
'email'=>'xxxxxx.com',
);
//去掉字符串空格
preg_replace("/\s/", "", $val);
$res = checkParam($arrInput);
echo $res[1];