提交 5ec2ee4f 编写于 作者: D devil

验证码逻辑优化

上级 00811f74
...@@ -1012,10 +1012,10 @@ class UserService ...@@ -1012,10 +1012,10 @@ class UserService
} }
// 是否开启图片验证码 // 是否开启图片验证码
$verify_params = array( $verify_params = [
'key_prefix' => 'login', 'key_prefix' => 'login',
'expire_time' => MyC('common_verify_expire_time'), 'expire_time' => MyC('common_verify_expire_time'),
); ];
$verify = self::IsImaVerify($params, $verify_params, MyC('home_user_login_img_verify_state')); $verify = self::IsImaVerify($params, $verify_params, MyC('home_user_login_img_verify_state'));
if($verify['code'] != 0) if($verify['code'] != 0)
{ {
...@@ -1064,6 +1064,12 @@ class UserService ...@@ -1064,6 +1064,12 @@ class UserService
); );
if(Db::name('User')->where(['id'=>$user['id']])->update($data) !== false) if(Db::name('User')->where(['id'=>$user['id']])->update($data) !== false)
{ {
// 清除图片验证码
if(isset($verify) && isset($verify['data']) && is_object($verify['data']))
{
$verify['data']->Remove();
}
return self::UserLoginHandle($user['id'], $params); return self::UserLoginHandle($user['id'], $params);
} }
return DataReturn('登录失效,请重新登录', -100); return DataReturn('登录失效,请重新登录', -100);
...@@ -1166,28 +1172,54 @@ class UserService ...@@ -1166,28 +1172,54 @@ class UserService
return $ret; return $ret;
} }
// 是否需要审核
$common_register_is_enable_audit = MyC('common_register_is_enable_audit', 0);
// 用户数据
$salt = GetNumberCode(6);
$data = [
'upd_time' => time(),
'salt' => $salt,
'pwd' => LoginPwdEncryption($params['pwd'], $salt),
'status' => ($common_register_is_enable_audit == 1) ? 3 : 0,
];
// 验证码校验 // 验证码校验
$verify_params = array( $verify_params = [
'key_prefix' => 'reg', 'key_prefix' => 'reg_'.md5($params['accounts']),
'expire_time' => MyC('common_verify_expire_time'), 'expire_time' => MyC('common_verify_expire_time'),
); ];
if($params['type'] == 'sms')
{ // 账户类型
$obj = new \base\Sms($verify_params); switch($params['type'])
} else if($params['type'] == 'email') {
$obj = new \base\Email($verify_params);
} else if($params['type'] == 'username')
{ {
// 是否开启图片验证码 // 短信
$verify_params['key_prefix'] = 'images_verify_reg'; case 'sms' :
$verify = self::IsImaVerify($params, $verify_params, MyC('home_user_register_img_verify_state')); $data['mobile'] = $params['accounts'];
if($verify['code'] != 0) $obj = new \base\Sms($verify_params);
{ break;
return $verify;
} // 邮箱
case 'email' :
$data['email'] = $params['accounts'];
$obj = new \base\Email($verify_params);
break;
// 默认 账号
default :
$data['username'] = $params['accounts'];
// 是否开启图片验证码
// images_verify_reg 由前端图片验证码传递的 type 一致
$verify_params['key_prefix'] = 'images_verify_reg';
$verify = self::IsImaVerify($params, $verify_params, MyC('home_user_register_img_verify_state'));
if($verify['code'] != 0)
{
return $verify;
}
} }
// 验证码校验 // 验证码校验
// sms, email
if(isset($obj) && is_object($obj)) if(isset($obj) && is_object($obj))
{ {
// 是否已过期 // 是否已过期
...@@ -1202,26 +1234,6 @@ class UserService ...@@ -1202,26 +1234,6 @@ class UserService
} }
} }
// 是否需要审核
$common_register_is_enable_audit = MyC('common_register_is_enable_audit', 0);
// 用户数据
$salt = GetNumberCode(6);
$data = [
'upd_time' => time(),
'salt' => $salt,
'pwd' => LoginPwdEncryption($params['pwd'], $salt),
'status' => ($common_register_is_enable_audit == 1) ? 3 : 0,
];
if($params['type'] == 'sms')
{
$data['mobile'] = $params['accounts'];
} else if($params['type'] == 'email') {
$data['email'] = $params['accounts'];
} else {
$data['username'] = $params['accounts'];
}
// 数据添加 // 数据添加
$user_ret = self::UserInsert($data, $params); $user_ret = self::UserInsert($data, $params);
if($user_ret['code'] == 0) if($user_ret['code'] == 0)
...@@ -1389,12 +1401,12 @@ class UserService ...@@ -1389,12 +1401,12 @@ class UserService
return DataReturn('暂时关闭用户注册'); return DataReturn('暂时关闭用户注册');
} }
// 验证码公共基础参数 // 验证码基础参数
$verify_params = array( $verify_params = [
'key_prefix' => 'reg', 'key_prefix' => 'reg',
'expire_time' => MyC('common_verify_expire_time'), 'expire_time' => MyC('common_verify_expire_time'),
'time_interval' => MyC('common_verify_time_interval'), 'time_interval' => MyC('common_verify_time_interval'),
); ];
// 是否开启图片验证码 // 是否开启图片验证码
$verify = self::IsImaVerify($params, $verify_params, MyC('home_img_verify_state')); $verify = self::IsImaVerify($params, $verify_params, MyC('home_img_verify_state'));
...@@ -1410,23 +1422,34 @@ class UserService ...@@ -1410,23 +1422,34 @@ class UserService
return $ret; return $ret;
} }
// 验证码基础参数 key
$verify_params['key_prefix'] = 'reg_'.md5($params['accounts']);
// 发送验证码 // 发送验证码
$code = GetNumberCode(4); $code = GetNumberCode(4);
if($params['type'] == 'sms') switch($params['type'])
{ {
$obj = new \base\Sms($verify_params); // 短信
$status = $obj->SendCode($params['accounts'], $code, MyC('home_sms_user_reg')); case 'sms' :
} else if($params['type'] == 'email') { $obj = new \base\Sms($verify_params);
$obj = new \base\Email($verify_params); $status = $obj->SendCode($params['accounts'], $code, MyC('home_sms_user_reg'));
$email_param = array( break;
'email' => $params['accounts'],
'content' => MyC('home_email_user_reg'), // 邮箱
'title' => MyC('home_site_name').' - 用户注册', case 'email' :
'code' => $code, $obj = new \base\Email($verify_params);
); $email_params = array(
$status = $obj->SendHtml($email_param); 'email' => $params['accounts'],
} else { 'content' => MyC('home_email_user_reg'),
return DataReturn('该类型不支持验证码发送', -2); 'title' => MyC('home_site_name').' - 用户注册',
'code' => $code,
);
$status = $obj->SendHtml($email_params);
break;
// 默认
default :
return DataReturn('该类型不支持验证码发送', -2);
} }
// 状态 // 状态
...@@ -1460,12 +1483,12 @@ class UserService ...@@ -1460,12 +1483,12 @@ class UserService
return DataReturn('参数错误', -10); return DataReturn('参数错误', -10);
} }
// 验证码公共基础参数 // 验证码基础参数
$verify_params = array( $verify_params = [
'key_prefix' => 'forget', 'key_prefix' => 'forget',
'expire_time' => MyC('common_verify_expire_time'), 'expire_time' => MyC('common_verify_expire_time'),
'time_interval' => MyC('common_verify_time_interval'), 'time_interval' => MyC('common_verify_time_interval'),
); ];
// 是否开启图片验证码 // 是否开启图片验证码
$verify = self::IsImaVerify($params, $verify_params, MyC('home_img_verify_state')); $verify = self::IsImaVerify($params, $verify_params, MyC('home_img_verify_state'));
...@@ -1474,42 +1497,50 @@ class UserService ...@@ -1474,42 +1497,50 @@ class UserService
return $verify; return $verify;
} }
// 账户是否存在 // 账户是否存在,并返回账户格式类型
$ret = self::UserForgetAccountsCheck($params['accounts']); $ret = self::UserForgetAccountsCheck($params['accounts']);
if($ret['code'] != 0) if($ret['code'] != 0)
{ {
return $ret; return $ret;
} }
// 验证码基础参数 key
$verify_params['key_prefix'] = 'forget_'.md5($params['accounts']);
// 验证码 // 验证码
$code = GetNumberCode(4); $code = GetNumberCode(4);
// 手机 // 账户字段类型
if($ret['data'] == 'mobile') switch($ret['data'])
{ {
$obj = new \base\Sms($verify_params); // 手机
$status = $obj->SendCode($params['accounts'], $code, MyC('home_sms_user_forget_pwd')); case 'mobile' :
$obj = new \base\Sms($verify_params);
$status = $obj->SendCode($params['accounts'], $code, MyC('home_sms_user_forget_pwd'));
break;
// 邮箱 // 邮箱
} else if($ret['data'] == 'email') case 'email' :
{ $obj = new \base\Email($verify_params);
$obj = new \base\Email($verify_params); $email_params = [
$email_param = array(
'email' => $params['accounts'], 'email' => $params['accounts'],
'content' => MyC('home_email_user_forget_pwd'), 'content' => MyC('home_email_user_forget_pwd'),
'title' => MyC('home_site_name').' - '.'密码找回', 'title' => MyC('home_site_name').' - '.'密码找回',
'code' => $code, 'code' => $code,
); ];
$status = $obj->SendHtml($email_param); $status = $obj->SendHtml($email_params);
} else { break;
return DataReturn('手机/邮箱格式有误', -1);
// 默认
default :
return DataReturn('手机/邮箱格式有误', -1);
} }
// 状态 // 状态
if($status) if($status)
{ {
// 清除验证码 // 清除图片验证码
if(isset($verify['data']) && is_object($verify['data'])) if(isset($verify) && isset($verify['data']) && is_object($verify['data']))
{ {
$verify['data']->Remove(); $verify['data']->Remove();
} }
...@@ -1591,18 +1622,28 @@ class UserService ...@@ -1591,18 +1622,28 @@ class UserService
} }
// 验证码校验 // 验证码校验
$verify_params = array( $verify_params = [
'key_prefix' => 'forget', 'key_prefix' => 'forget_'.md5($params['accounts']),
'expire_time' => MyC('common_verify_expire_time'), 'expire_time' => MyC('common_verify_expire_time'),
'time_interval' => MyC('common_verify_time_interval'), 'time_interval' => MyC('common_verify_time_interval'),
); ];
if($ret['data'] == 'mobile') switch($ret['data'])
{
$obj = new \base\Sms($verify_params);
} else if($ret['data'] == 'email')
{ {
$obj = new \base\Email($verify_params); // 手机
case 'mobile' :
$obj = new \base\Sms($verify_params);
break;
// 邮箱
case 'email' :
$obj = new \base\Email($verify_params);
break;
// 默认
default :
return DataReturn('手机/邮箱格式有误', -1);
} }
// 是否已过期 // 是否已过期
if(!$obj->CheckExpire()) if(!$obj->CheckExpire())
{ {
...@@ -1625,6 +1666,8 @@ class UserService ...@@ -1625,6 +1666,8 @@ class UserService
$ret = SafetyService::UserLoginPwdUpdate($params['accounts'], $user['id'], $params['pwd']); $ret = SafetyService::UserLoginPwdUpdate($params['accounts'], $user['id'], $params['pwd']);
if($ret['code'] != 0) if($ret['code'] != 0)
{ {
// 清除验证码
$obj->Remove();
return DataReturn('操作成功', 0); return DataReturn('操作成功', 0);
} }
return $ret; return $ret;
...@@ -1986,10 +2029,10 @@ class UserService ...@@ -1986,10 +2029,10 @@ class UserService
} }
// 验证码校验 // 验证码校验
$verify_params = array( $verify_params = [
'key_prefix' => 'bind', 'key_prefix' => 'bind_'.md5($params['mobile']),
'expire_time' => MyC('common_verify_expire_time') 'expire_time' => MyC('common_verify_expire_time')
); ];
$obj = new \base\Sms($verify_params); $obj = new \base\Sms($verify_params);
// 是否已过期 // 是否已过期
...@@ -2097,9 +2140,8 @@ class UserService ...@@ -2097,9 +2140,8 @@ class UserService
// 清除验证码 // 清除验证码
$obj->Remove(); $obj->Remove();
return DataReturn('绑定成功', 0, self::AppUserInfoHandle($user_id)); return DataReturn('绑定成功', 0, self::AppUserInfoHandle($user_id));
} else {
return DataReturn('绑定失败', -100);
} }
return DataReturn('绑定失败', -100);
} }
/** /**
...@@ -2134,11 +2176,11 @@ class UserService ...@@ -2134,11 +2176,11 @@ class UserService
} }
// 验证码公共基础参数 // 验证码公共基础参数
$verify_params = array( $verify_params = [
'key_prefix' => 'bind', 'key_prefix' => 'bind_'.md5($params['mobile']),
'expire_time' => MyC('common_verify_expire_time'), 'expire_time' => MyC('common_verify_expire_time'),
'time_interval' => MyC('common_verify_time_interval'), 'time_interval' => MyC('common_verify_time_interval'),
); ];
// 发送验证码 // 发送验证码
$obj = new \base\Sms($verify_params); $obj = new \base\Sms($verify_params);
...@@ -2149,9 +2191,8 @@ class UserService ...@@ -2149,9 +2191,8 @@ class UserService
if($status) if($status)
{ {
return DataReturn('发送成功', 0); return DataReturn('发送成功', 0);
} else {
return DataReturn('发送失败'.'['.$obj->error.']', -100);
} }
return DataReturn('发送失败'.'['.$obj->error.']', -100);
} }
/** /**
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册