php 实现密码错误三次锁定账号10分钟

mac2022-06-30  57

/*** 登录* 1、接收数据* 2、正则判断接收到的数据是否合理* 3、根据用户名获取用户数据* 获取到数据 -> 继续执行* 没有获取到数据 -> 提示:用户名密码错误* 4、判断锁定时间* 当前时间和锁定时间差 大于 10分钟 或者 没有锁定时间 -> 继续执行* 当前时间和锁定时间差 小于 10分钟 -> 提示:账号锁定中、请10分钟后再试* 5、判断密码* ==* 次数=0* 登录成功* !=* 次数 大于等于 2 -> 锁定操作、次数=0 -> 账号已经锁定* 次数 小于 2 次数+1 -> 账号密码错误*/public function login(){$name = request()->post('name', '');$pwd = request()->post('pwd', '');if ( $name == '' || $pwd == '' || $name == null || $pwd == null) {$arr['code'] = 1;$arr['msg'] = '参数错误、用户名或密码不能为空';$arr['data'] = [];return json($arr);}$preg_name = '/^[\x{4e00}-\x{9fa5}]{2,5}$/u';if( !preg_match( $preg_name, $name ) ){$arr['code'] = 1;$arr['msg'] = '用户名要求必须是2到5位的汉字';$arr['data'] = [];return json($arr);}$preg_pwd = '/^\S{5,18}$/';if (!preg_match($preg_pwd, $pwd)) {$arr['code'] = 1;$arr['msg'] = '密码要求必须5到18位非空字符串';$arr['data'] = [];return json($arr);}$where['user_name'] = $name;$res = Db::table('user')->field('user_id,user_name,user_pwd_login,user_lock_time,user_pwd_num')->where($where)->find();if (!$res) {$arr['code'] = 1;$arr['msg'] = '用户名或密码错误、请重试';$arr['data'] = [];return json($arr);}if($res['user_lock_time'] != '' && time() - strtotime($res['user_lock_time']) < 1*60 ){$arr['code'] = 1;$arr['msg'] = '该账号已被锁定、请10分钟后重试';$arr['data'] = [];return json($arr);}$upd_where['user_id'] = $res['user_id'];if( $pwd != $res['user_pwd_login'] ){// 次数 大于等于 2 -> 锁定操作、次数=0 -> 账号已经锁定if( $res['user_pwd_num'] >= 2 ){$upd_data['user_lock_time'] = date('Y-m-d H:i:s', time() );$upd_data['user_pwd_num'] = 0;Db::table('user')->where($upd_where )->update( $upd_data );$arr['code'] = 1;$arr['msg'] = '账号密码错误次数超过3次、账号锁定10分钟、请稍后重试';$arr['data'] = [];return json($arr);}else{// 次数 小于2 次数+1 -> 账号密码错误Db::table('user')->where($upd_where)->setInc('user_pwd_num');$arr['code'] = 1;$arr['msg'] = '账号密码错误、剩余'. (3 - ($res['user_pwd_num'] + 1) ) .'次、请稍后重试';$arr['data'] = [];return json($arr);}}Db::table('user')->where($upd_where)->update(['user_pwd_num'=>0]);Session::set('user', $res);$arr['code'] = 0;$arr['msg'] = '登录成功';$arr['data'] = $res;return json($arr);}

转载于:https://www.cnblogs.com/liujunyue/p/11510222.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)