Redis限制在规定时间范围内登陆错误次数限制
在博客里之前有过一篇文章是 《PHP结合Redis来限制用户或者IP某个时间段内访问的次数》,这篇文章的思路也是一样的。看下代码吧
//登录错误次数校验
$key = "login_{$username}";
$res = $this->_redisVerify($key,10,1800);//半小时内密码输入错误10次
if(!$res){
echo "手机号或密码错误次数过多,请稍后再试";
}else{
echo "手机号或密码错误";
}
/**
* redis限制
* @param $key : redis key
* @param $times : 次数
* @param $time : key有效时间
* @return bool
*/
private function _redisVerify($key,$times,$time = 86400){
$redis = new Utils_Redis();
$redis->select(11);//选择db 10
$value = (int)$redis->get($key);
if($value && $value < $times){//防刷次数
$redis->increment($key);
}elseif(!$value){
$redis->set($key,1,$time);//设置TimeOut
}elseif($value >= $times){
return false;
}
return true;
}
OK