php禁止同一ip频繁访问以防止网站被防攻击或采集的代码
<p><?php</p>
<div class="aritcle_card">
<a class="aritcle_card_img" href="/ai/1589">
<img src="https://img.php.cn/upload/ai_manual/000/000/000/175680266950579.png" alt="采风问卷">
</a>
<div class="aritcle_card_info">
<a href="/ai/1589">采风问卷</a>
<p>采风问卷是一款全新体验的调查问卷、表单、投票、评测的调研平台,新奇的交互形式,漂亮的作品,让客户眼前一亮,让创作者获得更多的回复。</p>
<div class="">
<img src="/static/images/card_xiazai.png" alt="采风问卷">
<span>20</span>
</div>
</div>
<a href="/ai/1589" class="aritcle_card_btn">
<span>查看详情</span>
<img src="/static/images/cardxiayige-3.png" alt="采风问卷">
</a>
</div>
/* <br />*通过禁止IP频繁访问防止网站被防攻击代码<br />*design by www.scutephp.com<br />*/<br />header('Content-type: text/html; charset=utf-8');<br />$ip=$_SERVER['REMOTE_ADDR'];//获取当前访问者的ip<br />$logFilePath='./log/';//日志记录文件保存目录<br />$fileht='.htaccess2';//被禁止的ip记录文件<br />$allowtime=60;//防刷新时间<br />$allownum=5;//防刷新次数<br />$allowRefresh=120;//在允许刷新次数之后加入禁止ip文件中<br /><br />if(!file_exists($fileht)){<br /> file_put_contents($fileht,'');<br />}<br />$filehtarr=@file($fileht);<br />if(in_array($ip."\r\n",$filehtarr)){<br /> exit('警告:你的IP已经被禁止了!');<br />} <br />//加入禁止ip<br />$time=time();<br />$fileforbid=$logFilePath.'forbidchk.dat';<br />if(file_exists($fileforbid)){<br /> if($time-filemtime($fileforbid)>30){<br /> @unlink($fileforbid);<br /> }else{<br /> $fileforbidarr=@file($fileforbid);<br /> if($ip==substr($fileforbidarr[0],0,strlen($ip))){<br /> if($time-substr($fileforbidarr[1],0,strlen($time))>120){<br /> @unlink($fileforbid);<br /> }else if($fileforbidarr[2]>$allowRefresh){<br /> file_put_contents($fileht,$ip."\r\n",FILE_APPEND);<br /> @unlink($fileforbid);<br /> }else{<br /> $fileforbidarr[2]++;<br /> file_put_contents($fileforbid,$fileforbidarr);<br /> }<br /> }<br /> }<br />}<br />//防刷新<br />$str='';<br />$file=$logFilePath.'ipdate.dat';<br />if(!file_exists($logFilePath)&&!is_dir($logFilePath)){<br /> mkdir($logFilePath,0777);<br />}<br />if(!file_exists($file)){<br /> file_put_contents($file,'');<br />}<br />$uri=$_SERVER['REQUEST_URI'];//获取当前访问的网页文件地址<br />$checkip=md5($ip);<br />$checkuri=md5($uri);<br />$yesno=true;<br />$ipdate=@file($file);<br />foreach($ipdate as $k=>$v){<br /> $iptem=substr($v,0,32);<br /> $uritem=substr($v,32,32);<br /> $timetem=substr($v,64,10);<br /> $numtem=substr($v,74);<br /> if($time-$timetem<$allowtime){<br /> if($iptem!=$checkip){<br /> $str.=$v;<br /> }else{<br /> $yesno=false;<br /> if($uritem!=$checkuri){<br /> $str.=$iptem.$checkuri.$time."\r\n";<br /> }else if($numtem<$allownum){<br /> $str.=$iptem.$uritem.$timetem.($numtem+1)."\r\n";<br /> }<br /> else{<br /> if(!file_exists($fileforbid)){<br /> $addforbidarr=array($ip."\r\n",time()."\r\n",1);<br /> file_put_contents($fileforbid,$addforbidarr);<br /> }<br /> file_put_contents($logFilePath.'forbided_ip.log',$ip.'--'.date('Y-m-d H:i:s',time()).'--'.$uri."\r\n",FILE_APPEND);<br /> $timepass=$timetem+$allowtime-$time;<br /> exit('警告:不要刷新的太频繁!');<br /> }<br /> }<br /> }<br />}<br />if($yesno){<br /> $str.=$checkip.$checkuri.$time."\r\n";<br />}<br />file_put_contents($file,$str);
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号