三次登陆锁定TP

根据业务需求!提高网站的安全性,用户一天之内,密码错误三次,这今天账户锁定,次日自动解冻!
我的博客 

-- ----------------------------

-- Table structure for user

-- ----------------------------

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (

`u_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '会员管理 id',

`u_name` varchar(30) DEFAULT NULL COMMENT '用户姓名',

`username` varchar(30) DEFAULT NULL COMMENT '用户名',

`password` varchar(30) DEFAULT NULL COMMENT '会员密码',

`price` decimal(10,0) DEFAULT NULL COMMENT '余额',

`add_time` int(11) DEFAULT NULL COMMENT '创建时间',

`log_num` int(11) DEFAULT '0' COMMENT '步长',

`last_time` int(11) DEFAULT NULL,

PRIMARY KEY (`u_id`)

) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='会员管理';

以上表名,比以往的user表多两个字段,

1.记录时间,上次登陆时间,

2.步长 记录登陆错误次数

思路:

1.判断 验证  用户名

2.如果时间不是当天 并且  步长大于0  那么步长归0

3.如果步长大于3,锁定用户

4.判断密码     a.登陆成功 步长重置   b.登陆失败 步长+1  时间记录

简单的需求思路 下面code

//管理员登陆 限制三次

public function doLogin(){

//接受前台提交的用户名 密码

$data = I('post.');

$model = M("admin");

//查询当前用户信息

$reg = $model->where('username = "'.$data['username'].'"')->find();

if(!$reg){

$this->error("账户不存在",U('Admin/login'));

}

//1最后登陆时间不是当天,并且错误次数大于0 那么让他的步张=0

if(date("Ymd",$reg['last_time']) != date("Ymd") && $reg['log_num']>0){

$reg['log_num'] = 0;

}

//2判断步长大于等于3 账户 锁定账户

if($reg['log_num']>=3){

$this->error("账户被锁定了,明天再来吧",U('Admin/login'));

}

//3判断密码是否正确 ->登陆成功步长重置

if($data['pwd'] == $reg['password']){ //登陆成功

session("user",$reg);

if($reg['log_num']>0){

$model->where('a_id ='.$reg['a_id'])->save(array('log_num'=>0));

}

$this->success("登陆成功",U('Index/index'));

}else{ //登陆失败

$num = $reg['log_num']+1;

$time_num = array('log_num'=>$num,'last_time'=>time());

$model->where('a_id ='.$reg['a_id'])->save($time_num);

//判断还能登陆几次

$log_num = 2 - $reg['log_num'];

$str = "密码错误,还能登".$log_num."次";

//错误提示 判断是否锁定

if($log_num <=0) $str = "账户被锁定";

$this->error($str);

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,349评论 0 33
  • CREATE TABLE IF NOT EXISTS ecs_order_info (order_id mediu...
    cookie口阅读 15,849评论 0 16
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,312评论 19 139
  • 案情简介: 甲乙为夫妻关系,因感情破裂协议离婚,之后便一同前往婚姻登记机关办理离婚登记。离婚后甲随即与丙结婚,后乙...
    凤梨的蚌蚌糖阅读 2,642评论 0 0
  • 去日淮阳多病,迩后了身达命。鸿爪雪泥间,一曲相思唱竟。半镜、半镜,疏影离离独映。
    肇英阅读 2,784评论 0 2