• PHP禁止同一IP频繁访问以防止网站被防攻击或采集的代码


    <?php
    
    /* 
    *通过禁止IP频繁访问防止网站被防攻击代码
    *design by www.scutephp.com
    */
    header('Content-type: text/html; charset=utf-8');
    $ip=$_SERVER['REMOTE_ADDR'];//获取当前访问者的ip
    $logFilePath='./log/';//日志记录文件保存目录
    $fileht='.htaccess2';//被禁止的ip记录文件
    $allowtime=60;//防刷新时间
    $allownum=5;//防刷新次数
    $allowRefresh=120;//在允许刷新次数之后加入禁止ip文件中
    
    if(!file_exists($fileht)){
    file_put_contents($fileht,'');
    }
    $filehtarr=@file($fileht);
    if(in_array($ip."
    ",$filehtarr)){
    exit('警告:你的IP已经被禁止了!');
    } 
    //加入禁止ip
    $time=time();
    $fileforbid=$logFilePath.'forbidchk.dat';
    if(file_exists($fileforbid)){
    if($time-filemtime($fileforbid)>30){
    @unlink($fileforbid);
    }else{
    $fileforbidarr=@file($fileforbid);
    if($ip==substr($fileforbidarr[0],0,strlen($ip))){
    if($time-substr($fileforbidarr[1],0,strlen($time))>120){
    @unlink($fileforbid);
    }else if($fileforbidarr[2]>$allowRefresh){
    file_put_contents($fileht,$ip."
    ",FILE_APPEND);
    @unlink($fileforbid);
    }else{
    $fileforbidarr[2]++;
    file_put_contents($fileforbid,$fileforbidarr);
    }
    }
    }
    }
    //防刷新
    $str='';
    $file=$logFilePath.'ipdate.dat';
    if(!file_exists($logFilePath)&&!is_dir($logFilePath)){
    mkdir($logFilePath,0777);
    }
    if(!file_exists($file)){
    file_put_contents($file,'');
    }
    $uri=$_SERVER['REQUEST_URI'];//获取当前访问的网页文件地址
    $checkip=md5($ip);
    $checkuri=md5($uri);
    $yesno=true;
    $ipdate=@file($file);
    foreach($ipdate as $k=>$v){
    $iptem=substr($v,0,32);
    $uritem=substr($v,32,32);
    $timetem=substr($v,64,10);
    $numtem=substr($v,74);
    if($time-$timetem<$allowtime){
    if($iptem!=$checkip){
    $str.=$v;
    }else{
    $yesno=false;
    if($uritem!=$checkuri){
    $str.=$iptem.$checkuri.$time."
    ";
    }else if($numtem<$allownum){
    $str.=$iptem.$uritem.$timetem.($numtem+1)."
    ";
    }
    else{
    if(!file_exists($fileforbid)){
    $addforbidarr=array($ip."
    ",time()."
    ",1);
    file_put_contents($fileforbid,$addforbidarr);
    }
    file_put_contents($logFilePath.'forbided_ip.log',$ip.'--'.date('Y-m-d H:i:s',time()).'--'.$uri."
    ",FILE_APPEND);
    $timepass=$timetem+$allowtime-$time;
    exit('警告:不要刷新的太频繁!');
    }
    }
    }
    }
    if($yesno){
    $str.=$checkip.$checkuri.$time."
    ";
    }
    file_put_contents($file,$str);
    世界上最美的风景,是自己努力的模样
  • 相关阅读:
    luogu_P1850 换教室
    luogu_P3224 [HNOI2012]永无乡
    luogu_P1064 金明的预算方案
    luogu_P2014 选课
    luogu_P3372 【模板】线段树 1(动态开点)
    luogu_P2852 [USACO06DEC]牛奶模式Milk Patterns
    luogu_P1941 飞扬的小鸟
    luogu_P2678 跳石头
    luogu_P1638 逛画展
    【Tyvj2046】掷骰子
  • 原文地址:https://www.cnblogs.com/xiong-hua/p/13921952.html
Copyright © 2020-2023  润新知