2019-09-06 23:53:10 +08:00

115 lines
4.9 KiB
PHP
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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 */
}