在部落格裡之前有過一篇文章是 《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