php账号登陆错误次数后禁用几分钟

网上大部分教程是通过strtotime转换为时间戳来比较,其实可以通过msql自带的timestampdiff来快速比较优化代码。

user表中增加err_login_time,err_login_count 记录最后一次错误登陆时间和错误登陆次数。
关键代码如下:

public  function isUserErr($username){
		$UserErr = false;
		$sql = "SELECT err_login_time,err_login_count  FROM `user` WHERE username=:username and  timestampdiff(MINUTE,err_login_time,now())<5";// :是一个占位符,为了防止sql注入
		$stmt = $this->_db->prepare($sql);//进行预处理
		$stmt->bindParam(':username',$username);//绑定变量
		$stmt->execute();//执行查询
		$err_login = $stmt->fetch(PDO::FETCH_ASSOC);//以数组索引的方式返回


        if(!$err_login){
			//echo "超过5分钟了,错误计数器归零";

			$sql = "update user set err_login_count=0 where username=:username";
			$stmt = $this->_db->prepare($sql);//进行预处理
			$stmt->bindParam(':username',$username);//绑定变量
			$stmt->execute();//执行查询

			return false;
		}
		else{
			if($err_login['err_login_count']<5) 
			{
				return false;
			}
			else 
			{return true;}
		}

		
	}

//pdo相关内容自行补充

if($user->isUserErr("cas"))
{
	echo "账号错误次数超过5次,账号禁用5分钟。";
}
else
{
	echo "正常登陆";
};


在错误登陆时,需要记录错误时间和累计错误次数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值