您的位置:首页 > 其它

SESSION频率限制

2015-01-19 10:47 806 查看
使用原因:最近一段时间在做作品投票的东西,前端上传过来的图片需要做限制次数,为了避免一次性投多次或者模拟提交的初衷,写了一个了利用SESSION记录投票的方法,限制上传页面。
/*****
*
*     频率限制
*  @param String $url          来自哪个网址
*  @param Int    $times        多少秒之内
*  @param Int    $num         多少次
*  @return false or true
*/

protected function frequency_limitation($url,$times=30,$num=5){
if($_SERVER['HTTP_ORIGIN']!=$url){
return false;
}
if($times<=0) return true;
$time = time();

$ip = $_SERVER['REMOTE_ADDR'];
$ip_time = sprintf('%s_%s',$ip,'time');
$ip_num = sprintf('%s_%s',$ip,'num');

if($_SESSION[$ip_time] || $_SESSION[$ip_num]){   //判断SESSION是否存在,不存在则初始化
if(($_SESSION[$ip_time]+$times) < $time) {  //判断SESSION存在的访问ip时间是否小于当前时间,大于则限制住
if($_SESSION[$ip_num] >= $num){        //判断SESSION存在的访问次数是否大于规定次数,不大于则通过,num自增
unset($_SESSION[$ip_time]);
unset($_SESSION[$ip_num]);
$_SESSION[$ip_time] = $time;
$_SESSION[$ip_num] = 1;
}else{
$_SESSION[$ip_num] +=1;
}
}else{
return false;
}
}else{
$_SESSION[$ip_time] = $time;
$_SESSION[$ip_num] = 1;
}
return true;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: