您好,欢迎访问一九零五行业门户网

简单编写php验证类,教你如何写好php程序(含多种验证规则)_PHP教程

很多人在开发网站的时候往往只是通过简单的js验证,当你一不小心在js中多写了个逗号或者点号,ie6无法识别就直接跳过验证了。其实最安全的做法还是需要在服务端对用户输入的数据做验证的。本人写了个简单的php验证类,含多种验证规则,供大家学习参考。原文链接
[php] 
$value) { 
            $key = strtolower($key); 
            foreach ($validate_role as $kk => $vv) { 
                $kk = strtolower($kk); 
                if($key == $kk){ 
                    foreach ($vv as $k => $v) { 
                        $k = strtolower($k); 
                        if( !in_array($k, $this->role_name)) return 'role name '.$k.' is not found!'; 
                        if($v == true){ 
                            if ( !$this->$k($value) ){ 
                                if (!isset($validate_err_msg[$kk][$k])) 
                                return 'var '.$key.' in '.$k.' of regular validation failure!'; 
                                return $validate_err_msg[$kk][$k]; 
                            } 
                        } 
                    } 
                } 
            } 
        } 
        return true; 
    }
// 获取规则数组  
    public function get_role_name(){ 
        return $this->role_name; 
    }
// 设置属性规则  
    public function set_role_name($arr){ 
        $this->role_name = array_merge($this->role_name, $arr); 
    }
// 验证是否为空  
    public function required($str){ 
        if(trim($str) != ) return true; 
        return false; 
    }
// 验证邮件格式  
    public function email($str){ 
        if(preg_match(/^([a-za-z0-9]+[_|\_|\.]?)*[a-za-z0-9]+@([a-za-z0-9]+[_|\_|\.]?)*[a-za-z0-9]+\.[a-za-z]{2,3}$/, $str)) return true; 
        else return false; 
    }
// 验证身份证  
    public function idcode($str){ 
        if(preg_match(/^\d{14}(\d{1}|\d{4}|(\d{3}[xx]))$/, $str)) return true; 
        else return false; 
    }
// 验证http地址  
    public function http($str){ 
        if(preg_match(/[a-za-z]+:\/\/[^\s]*/, $str)) return true; 
        else return false; 
    }
//匹配qq号(qq号从10000开始)  
    public function qq($str){ 
        if(preg_match(/^[1-9][0-9]{4,}$/, $str)) return true; 
        else return false; 
    }
//匹配中国邮政编码  
    public function postcode($str){ 
        if(preg_match(/^[1-9]\d{5}$/, $str)) return true; 
        else return false; 
    }
//匹配ip地址  
    public function ip($str){ 
        if(preg_match(/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/, $str)) return true; 
        else return false; 
    }
// 匹配电话格式  
    public function telephone($str){ 
        if(preg_match(/^\d{3}-\d{8}$|^\d{4}-\d{7}$/, $str)) return true; 
        else return false; 
    }
// 匹配手机格式  
    public function mobile($str){ 
        if(preg_match(/^(13[0-9]|15[0-9]|18[0-9])\d{8}$/, $str)) return true; 
        else return false; 
    }
// 匹配26个英文字母  
    public function en_word($str){ 
        if(preg_match(/^[a-za-z]+$/, $str)) return true; 
        else return false; 
    }
// 匹配只有中文  
    public function cn_word($str){ 
        if(preg_match(/^[\x80-\xff]+$/, $str)) return true; 
        else return false; 
    }
// 验证账户(字母开头,由字母数字下划线组成,4-20字节)  
    public function user_account($str){ 
        if(preg_match(/^[a-za-z][a-za-z0-9_]{3,19}$/, $str)) return true; 
        else return false; 
    }
// 验证数字  
    public function number($str){ 
        if(preg_match(/^[0-9]+$/, $str)) return true; 
        else return false; 
    } 

$value) {
   $key = strtolower($key);
   foreach ($validate_role as $kk => $vv) {
    $kk = strtolower($kk);
    if($key == $kk){
     foreach ($vv as $k => $v) {
      $k = strtolower($k);
      if( !in_array($k, $this->role_name)) return 'role name '.$k.' is not found!';
      if($v == true){
       if ( !$this->$k($value) ){
        if (!isset($validate_err_msg[$kk][$k]))
        return 'var '.$key.' in '.$k.' of regular validation failure!';
        return $validate_err_msg[$kk][$k];
       }
      }
     }
    }
   }
  }
  return true;
 }
 // 获取规则数组
 public function get_role_name(){
  return $this->role_name;
 }
 // 设置属性规则
 public function set_role_name($arr){
  $this->role_name = array_merge($this->role_name, $arr);
 }
 // 验证是否为空
 public function required($str){
  if(trim($str) != ) return true;
  return false;
 }
 // 验证邮件格式
 public function email($str){
  if(preg_match(/^([a-za-z0-9]+[_|\_|\.]?)*[a-za-z0-9]+@([a-za-z0-9]+[_|\_|\.]?)*[a-za-z0-9]+\.[a-za-z]{2,3}$/, $str)) return true;
  else return false;
 }
 // 验证身份证
 public function idcode($str){
  if(preg_match(/^\d{14}(\d{1}|\d{4}|(\d{3}[xx]))$/, $str)) return true;
  else return false;
 }
 // 验证http地址
 public function http($str){
  if(preg_match(/[a-za-z]+:\/\/[^\s]*/, $str)) return true;
  else return false;
 }
 //匹配qq号(qq号从10000开始)
 public function qq($str){
  if(preg_match(/^[1-9][0-9]{4,}$/, $str)) return true;
  else return false;
 }
 //匹配中国邮政编码
 public function postcode($str){
  if(preg_match(/^[1-9]\d{5}$/, $str)) return true;
  else return false;
 }
 //匹配ip地址
 public function ip($str){
  if(preg_match(/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/, $str)) return true;
  else return false;
 }
 // 匹配电话格式
 public function telephone($str){
  if(preg_match(/^\d{3}-\d{8}$|^\d{4}-\d{7}$/, $str)) return true;
  else return false;
 }
 // 匹配手机格式
 public function mobile($str){
  if(preg_match(/^(13[0-9]|15[0-9]|18[0-9])\d{8}$/, $str)) return true;
  else return false;
 }
 // 匹配26个英文字母
 public function en_word($str){
  if(preg_match(/^[a-za-z]+$/, $str)) return true;
  else return false;
 }
 // 匹配只有中文
 public function cn_word($str){
  if(preg_match(/^[\x80-\xff]+$/, $str)) return true;
  else return false;
 }
 // 验证账户(字母开头,由字母数字下划线组成,4-20字节)
 public function user_account($str){
  if(preg_match(/^[a-za-z][a-za-z0-9_]{3,19}$/, $str)) return true;
  else return false;
 }
 // 验证数字
 public function number($str){
  if(preg_match(/^[0-9]+$/, $str)) return true;
  else return false;
 }
}
调用方法
[php] 
'ningofaura@gmail.com', 
    qq=>'593084029', 
    nickname=>'张海宁', 
    id=>'24', 
    ); 
$validate_role = array( 
    'username'=>array( 
        'required'=>true, 
        'email'=>true, 
        ), 
    'qq'=>array( 
        'required'=>true, 
        'qq'=>true, 
        ), 
    'nickname'=>array( 
        'required'=>true, 
        ), 
    'id'=>array( 
        'required'=>true, 
        'number'=>true, 
        ), 
    );
$validate_err_msg = array( 
    'username'=>array( 
        'required'=>用户名不能为空, 
        'email'=>邮箱格式不正确, 
        ), 
    'qq'=>array( 
        'required'=>qq不能为空, 
        'qq'=>qq格式不正确, 
        ), 
    'nickname'=>array( 
        'required'=>昵称不能为空, 
        ), 
    'id'=>array( 
        'required'=>id不能为空, 
        'number'=>不是数字, 
        ), 
    ); 
$validate = new validate(); 
$rt = $validate->verify($data, $validate_role, $validate_err_msg); 
if ($rt !== true){ 
    echo $rt; 
    exit; 

'ningofaura@gmail.com',
    qq=>'593084029',
    nickname=>'张海宁',
    id=>'24',
    );
$validate_role = array(
    'username'=>array(
        'required'=>true,
        'email'=>true,
        ),
    'qq'=>array(
        'required'=>true,
        'qq'=>true,
        ),
    'nickname'=>array(
        'required'=>true,
        ),
    'id'=>array(
        'required'=>true,
        'number'=>true,
        ),
    );
$validate_err_msg = array(
    'username'=>array(
        'required'=>用户名不能为空,
        'email'=>邮箱格式不正确,
        ),
    'qq'=>array(
        'required'=>qq不能为空,
        'qq'=>qq格式不正确,
        ),
    'nickname'=>array(
        'required'=>昵称不能为空,
        ),
    'id'=>array(
        'required'=>id不能为空,
        'number'=>不是数字,
        ),
    );
$validate = new validate();
$rt = $validate->verify($data, $validate_role, $validate_err_msg);
if ($rt !== true){
    echo $rt;
    exit;
}
当然,如果你觉得验证无法满足你的需求,您还可以创建子类扩展您的方法
[php]
db = &load_system(database); 
        $this->set_role_name($this->role_name); 
    }
// 判断用户名是否可以注册(防止用户名重复)  
    public function is_username($username){ 
        $_username = $this->db->filter('s', $username); 
        $sql = select id from user where username =.$_username; 
        if($this->db->num_rows($sql)){ 
            return false; 
        }else{ 
            return true; 
        } 
    }
// 判断昵称是否可用(防止昵称重复)  
    public function is_nickname($nickname){ 
        $_nickname = $this->db->filter('s', $nickname); 
        $sql = select id from user where nickname =.$_nickname; 
        if($this->db->num_rows($sql)){ 
            return false; 
        }else{ 
            return true; 
        } 
    } 

db = &load_system(database);
  $this->set_role_name($this->role_name);
 }
 // 判断用户名是否可以注册(防止用户名重复)
 public function is_username($username){
  $_username = $this->db->filter('s', $username);
  $sql = select id from user where username =.$_username;
  if($this->db->num_rows($sql)){
   return false;
  }else{
   return true;
  }
 }
 // 判断昵称是否可用(防止昵称重复)
 public function is_nickname($nickname){
  $_nickname = $this->db->filter('s', $nickname);
  $sql = select id from user where nickname =.$_nickname;
  if($this->db->num_rows($sql)){
   return false;
  }else{
   return true;
  }
 }
}
http://www.bkjia.com/phpjc/477434.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/477434.htmltecharticle很多人在开发网站的时候往往只是通过简单的js验证,当你一不小心在js中多写了个逗号或者点号,ie6无法识别就直接跳过验证了。其实最安...
其它类似信息

推荐信息