| // +------------------------------------------------+ namespace app\common\validate; use app\common\model\Sms as SmsModel; use think\Db; use think\Validate; use tools\Crypt; class Member extends Validate { /** * 验证规则 * @var array */ protected $rule = [ 'username' => 'require|length:4,32|unique:member', 'password' => 'require|length:6,32', 'openid' => 'require', 'oldpass' => 'require|length:6,32|verifyPassword:', 'newpass' => 'require|length:6,32|different:oldpass', 'repass' => 'require|length:6,32|confirm:newpass', 'verify' => 'require|number|length:4|checkVerify:', ]; /** * 提示信息 * @var array */ protected $message = [ 'username.require' => '手机号必须填写', 'username.length' => '手机号长度应在:1-:2位之间', 'username.unique' => '手机号已经存在', 'password.require' => '密码必须填写', 'password.length' => '密码长度应在:1-:2位之间', 'oldpass.require' => '原始密码必须填写', 'oldpass.length' => '原始密码长度应在:1-:2位之间', 'oldpass.verifyPassword' => '原始密码不正确', 'newpass.require' => '新密码必须填写', 'newpass.length' => '新密码长度应在:1-:2位之间', 'newpass.different' => '新密码不能与原始密码相同', 'repass.require' => '确认密码必须填写', 'repass.length' => '确认密码长度应在:1-:2位之间', 'repass.confirm' => '两次输入的密码不一致', 'openid.require' => '绑定失败', 'verify.require' => '验证码必须填写', 'verify.number' => '验证码只允许数字', 'verify.length' => '请输入:rule位验证码', ]; /** * 验证场景 * @var array */ protected $scene = [ 'changepass' => ['oldpass', 'newpass', 'repass'], 'updatepass' => ['password'], 'openid' => ['openid'], 'forget' => ['newpass', 'repass'], 'register' => ['username', 'password'], 'login' => ['username' => 'require|length:4,32', 'password'], 'mobileRegister' => ['username', 'password', 'repass' => 'require|confirm:password'], 'bindmobile' => ['username', 'verify'], ]; protected function verifyPassword($value, $rule, $data) { return Crypt::uMd5($value) == Db::name('Member')->where('id', $data['uid'])->value('password'); } protected function checkVerify($val, $rule, $data) { $res = SmsModel::where('mobile', $data['username'])->where('status', 0)->order('id desc')->find(); if ($res && $res['code'] == $val) { $res->save(['status' => 1]); return true; } else { return '验证码有误'; } } }