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; }
相关文章推荐
- nginx限制ip访问频率
- 限制表同时只能一个Session进行数据操作
- 新浪微博开放平台API访问频率限制解决方法
- PHP设置会话(Session)超时过期时间实现登录时间限制
- Java通过redis实现接口ip访问频率限制
- PHP Redis 限制API和各种接口 请求频率
- Django 限制用户访问频率的中间件的实现
- 使用 SSDB 来实现操作频率限制
- postfix安装milter-limit限制发件频率
- API访问频率限制的解决方案
- 限制用户访问频率——Django
- C# 站点IP访问频率限制 针对单个站点
- 修改配置nginx,限制无良爬虫频率
- 由“ASP.NET网站限制访问频率”想到的两点问题(转)
- Objective-C限制函数调用的频率详解
- .net的session详解 存储模式 存到数据库中 使用范围与大小限制 生命周期
- ASP.NET WebApi实现请求频率限制
- 修改配置nginx,限制无良爬虫频率
- PHP设置会话(Session)超时过期时间实现登录时间限制