You've already forked qlg.tsgz.moe
							
							
		
			
				
	
	
		
			115 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			115 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
| <?php 
 | |
| namespace wstmart\common\validate;
 | |
| use think\Validate;
 | |
| /**
 | |
|  * ============================================================================
 | |
|  * 认证验证器
 | |
|  */
 | |
| class Auth extends Validate{
 | |
| 	protected $rule = [
 | |
|         ['headImg'  ,'require','请上传头像'],
 | |
|         ['householdName'  ,'require|chs','请输入户主名|请输入汉字'],
 | |
|         ['householdIdCard'  ,'require|validation_filter_id_card','请输入身份证号|身份证号错误'],
 | |
|         ['houseAddress'  ,'require','请输入居住地址'],
 | |
|         ['accountBookImg'  ,'require','请上传手持户口簿主页照片'],        
 | |
|         ['payPwd'  ,'require','请输入操作密码'],
 | |
| 
 | |
|         ['companyName'  ,'require|chs','请输入合作名|请输入汉字'],
 | |
|         ['trueName'  ,'require|chs','请输入姓名|请输入汉字'],
 | |
|         ['idCard'  ,'require|validation_filter_id_card','请输入身份证号|身份证号错误'],
 | |
|         ['companyAddress'  ,'require','请输入公司地址'],
 | |
| 
 | |
| 
 | |
|         ['familyName'  ,'require|chs','请输入姓名|请输入汉字'],
 | |
|         ['familyIdCard'  ,'require|validation_filter_id_card','请输入身份证号|身份证号错误'],
 | |
|         ['familyRelations'  ,'require','请输入与户主关系'],
 | |
|         ['familyRelationsImg'  ,'require','请上传户主关系证明照'],
 | |
|         ['idCardFrontImg'  ,'require','请上传身份证正面照'],
 | |
|         ['idCardBackImg'  ,'require','请上传身份证反面照'],
 | |
|         ['mobileCode'  ,'require|length:4','请输入验证码'],
 | |
|         
 | |
| 
 | |
|         ['bankName'  ,'require|chs','请输入银行名|请输入汉字'],
 | |
|         ['accountName'  ,'require|chs','请输入开户名|请输入汉字'],
 | |
|         ['bankNo'  ,'require','请输入银行卡号'],
 | |
| 
 | |
|         ['uName'  ,'require|chs','请输入姓名|请输入汉字'],
 | |
|         ['positionName'  ,'require|chs','请输入职位名|请输入汉字'],
 | |
|         ['businessImg'  ,'require','请上传手执营业执照照片'],
 | |
|         ['stake'  ,'require|between:1,100','请输入持股比例|持股比例范围为1-100']
 | |
| 
 | |
|     ];
 | |
| 
 | |
|     protected $scene = [
 | |
|         'personal'   =>  ['headImg','householdName','householdIdCard','houseAddress','accountBookImg'],//个人实名认证
 | |
|         'company'  =>  ['headImg','companyName','trueName','idCard','companyAddress'],//合作实名认证
 | |
|         'report'  =>  ['familyName','familyIdCard','familyRelations','familyRelationsImg'],//亲人报备
 | |
|         'family'  =>  ['familyRelations','familyRelationsImg','idCardFrontImg','idCardBackImg'],//亲人认证
 | |
|         'bank'  =>  ['bankName','accountName','bankNo'],//添加银行卡
 | |
|         'partner'  =>  ['positionName','stake','businessImg','idCardFrontImg','idCardBackImg'],//合作人认证
 | |
|     ]; 
 | |
|     // 自定义验证规则
 | |
|     // protected function checkName($value,$rule,$data)
 | |
|     // {
 | |
|     //     return $rule == $value ? true : '名称错误';
 | |
|     // }
 | |
|      /**
 | |
|      * 身份证验证 start
 | |
|      */
 | |
|     function validation_filter_id_card($id_card){
 | |
|         if(strlen($id_card)==18){
 | |
|             return $this->idcard_checksum18($id_card);
 | |
|         }elseif((strlen($id_card)==15)){
 | |
|             $id_card=$this->idcard_15to18($id_card);
 | |
|             return $this->idcard_checksum18($id_card);
 | |
|         }else{
 | |
|             return false;
 | |
|         }
 | |
|     }
 | |
|      // 计算身份证校验码,根据国家标准GB 11643-1999
 | |
|      function idcard_verify_number($idcard_base){
 | |
|         if(strlen($idcard_base)!=17){
 | |
|             return false;
 | |
|         }
 | |
|         //加权因子
 | |
|         $factor=array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);
 | |
|         //校验码对应值
 | |
|         $verify_number_list=array('1','0','X','9','8','7','6','5','4','3','2');
 | |
|         $checksum=0;
 | |
|         for($i=0;$i<strlen($idcard_base);$i++){
 | |
|             $checksum += substr($idcard_base,$i,1) * $factor[$i];
 | |
|         }
 | |
|         $mod=$checksum % 11;
 | |
|         $verify_number=$verify_number_list[$mod];
 | |
|         return $verify_number;
 | |
|      }
 | |
|      // 将15位身份证升级到18位
 | |
|      function idcard_15to18($idcard){
 | |
|         if(strlen($idcard)!=15){
 | |
|             return false;
 | |
|         }else{
 | |
|             // 如果身份证顺序码是996 997 998 999,这些是为百岁以上老人的特殊编码
 | |
|             if(array_search(substr($idcard,12,3),array('996','997','998','999')) !== false){
 | |
|                 $idcard=substr($idcard,0,6).'18'.substr($idcard,6,9);
 | |
|             }else{
 | |
|                 $idcard=substr($idcard,0,6).'19'.substr($idcard,6,9);
 | |
|             }
 | |
|         }
 | |
|         $idcard=$idcard.$this->idcard_verify_number($idcard);
 | |
|         return $idcard;
 | |
|      }
 | |
|      // 18位身份证校验码有效性检查
 | |
|      function idcard_checksum18($idcard){
 | |
|         if(strlen($idcard)!=18){
 | |
|             return false;
 | |
|         }
 | |
|         $idcard_base=substr($idcard,0,17);
 | |
|         if($this->idcard_verify_number($idcard_base)!=strtoupper(substr($idcard,17,1))){
 | |
|             return false;
 | |
|     return $user;
 | |
|         }else{
 | |
|             return true;
 | |
|         }
 | |
|      }
 | |
|      /***身份证验证 end */
 | |
| } |