zoukankan      html  css  js  c++  java
  • 网站页面防止被刷新

    <?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);
    每天学习一点,日积月累最终会汇成大海!
  • 相关阅读:
    apache安全—用户访问控制
    hdu 3232 Crossing Rivers 过河(数学期望)
    HDU 5418 Victor and World (可重复走的TSP问题,状压dp)
    UVA 11020 Efficient Solutions (BST,Splay树)
    UVA 11922 Permutation Transformer (Splay树)
    HYSBZ 1208 宠物收养所 (Splay树)
    HYSBZ 1503 郁闷的出纳员 (Splay树)
    HDU 5416 CRB and Tree (技巧)
    HDU 5414 CRB and String (字符串,模拟)
    HDU 5410 CRB and His Birthday (01背包,完全背包,混合)
  • 原文地址:https://www.cnblogs.com/viczhang/p/11410334.html
Copyright © 2011-2022 走看看