SESSION频率限制

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq624202120/article/details/42870469
使用原因: 最近一段时间在做作品投票的东西,前端上传过来的图片需要做限制次数,为了避免一次性投多次或者模拟提交的初衷,写了一个了利用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;
     }


猜你喜欢

转载自blog.csdn.net/qq624202120/article/details/42870469