php 实现密码错误三次锁定账号10分钟
2020-04-01 19:21
2316 查看
直接上个代码
/** * 登录 * 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); }
相关文章推荐
- tp框架(thinkPHP)实现三次登陆密码错误之后锁定账号功能示例
- Python实现账号密码输错三次即锁定功能简单示例
- centos7设置输入密码三次错误锁定账号
- java web 开发 如何实现 输入密码三次错误 后 锁定账户功能。
- Python用户名密码登录系统(MD5加密并存入文件,三次输入错误将被锁定)及对字符串进行凯撒密码加解密操作
- Oracle密码错误次数过多账号锁定的问题
- django 实现登录时候输入密码错误5次锁定用户十分钟
- 账号密码输错三次即锁定
- django实现登录时候输入密码错误5次锁定用户十分钟
- Oracle密码错误次数过多账号锁定的问题
- tp框架中三次登陆密码错误之后锁定
- python实现简单的用户密码登录控制(输入三次就锁定用户)
- 百度联盟账号多次密码输入错误,账户被锁定的解决办法
- 实现用户名密码登陆,输入错误3次后锁定用户
- python输入错误密码用户锁定实现方法
- python 实现用户输入名和密码,输入名为joe密码为123456 如果输入错误,只能输入三次
- 模拟ATM取款机的三次密码校验,当天达到3次输入密码错误, 则提示“账号被冻结”,其他情况则提示还有多少次输入机会
- java登录程序用户密码5分钟内输错3次锁定用户账号一天的实现
- java登录程序用户密码5分钟内输错3次锁定用户账号一天的实现
- 在域环境中客户端三次输入密码错误锁定方法(原创)