PHP禁止同一IP频繁访问以防止网站被攻击或采集的代码,可以参考代码自己建立数据表文件,或不建立也可以使用,只是限制IP的功能就无法使用,但防止刷新可以继续使用。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."rn",$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."rn",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

if($iptem!=$checkip){

$str.=$v;

}else{

$yesno=false;

if($uritem!=$checkuri){

$str.=$iptem.$checkuri.$time."rn";

}else if($numtem

$str.=$iptem.$uritem.$timetem.($numtem+1)."rn";

}

else{

if(!file_exists($fileforbid)){

$addforbidarr=array($ip."rn",time()."rn",1);

file_put_contents($fileforbid,$addforbidarr);

}

file_put_contents($logFilePath.'forbided_ip.log',$ip.'--'.date('Y-m-d H:i:s',time()).'--'.$uri."rn",FILE_APPEND);

$timepass=$timetem+$allowtime-$time;

exit('警告:不要刷新的太频繁!');

}

}

}

}

if($yesno){

$str.=$checkip.$checkuri.$time."rn";

}

file_put_contents($file,$str);

php 限制刷新,PHP禁止频繁刷新方法相关推荐

  1. winform频繁刷新导致界面闪烁解决方法

    winform频繁刷新导致界面闪烁解决方法 参考文章: (1)winform频繁刷新导致界面闪烁解决方法 (2)https://www.cnblogs.com/arxive/p/6270007.htm ...

  2. C#Winform频繁刷新导致界面闪烁解决方法

    C#Winform频繁刷新导致界面闪烁解决方法 参考文章: (1)C#Winform频繁刷新导致界面闪烁解决方法 (2)https://www.cnblogs.com/ghbjimmy/article ...

  3. php防止恶意频繁刷新页面或form提交

    php防止恶意频繁刷新页面或form提交 很多方法:(以下仅简单方法的简单思路,对于防止菜鸟"黑客"足矣): 1.检测referer来源地址是否为本站.($_SERVER['HTT ...

  4. win11开机频繁刷新桌面,explorer报错 ntdll.dll应用程序崩溃事件

    一:出现原因 开机就会频繁刷新桌面,假死机状态,初步判断为系统问题,还没有完全解决的办法. 首先去查看一下启动日志: 其中大片的explorer报错,详细信息里面展示的是应用程序崩溃事件,引起的原因是 ...

  5. vue项目刷新当前页面的三种方法

    本文介绍了vue项目刷新当前页面的三种方法,本文图文并茂给大家介绍的非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下. 想必大家在刨坑vue的时候也遇到过下面情形:比如在删除或者增加一条记录的时 ...

  6. layui table 弹出层刷新_layui 关闭open弹出框 刷新table表格页面的方法

    layui 关闭open弹出框 刷新table表格页面的方法 如下所示: 保存后刷新table表格 源码 //弹出框 layer.open({ type: 2, shadeClose: true, s ...

  7. ASP.NET页面刷新的几种实现方法

    先看看ASP.NET页面刷新的实现方法:第一:private void Button1_Click( object sender, System.EventArgs e ) { Response.Re ...

  8. 按下enter键禁止页面刷新

    这里讲解一下,PC端,前端可以遇到的一个问题,就是按下enter键禁止页面刷新. 这里有一个例子: 这个是我开发的一个项目.在这里面,我们在右上角搜索里面输入图片名字,按下搜索按钮就会检索出对应的图片 ...

  9. Android开发之刷新图片到相册 | 刷新视频到相册的方法区分发广播刷新方法

    我们很多app会有保存图片和保存视频,保存成功后一般在最近文件或者相册就能看到了,这个需要我们在保存文件后自行刷新到相册中,以前老版本方法通过广播刷新方法在API29中已经废弃了无法使用,咱们提供了新 ...

最新文章

  1. RDKit:化合物骨架分析(基于Python3)
  2. 重启centOS丢失nginx.pid导致无法启动nginx的解决方法
  3. Django入门:DoesNotExist: User matching query does not exist.
  4. 一步一步写算法(之克鲁斯卡尔算法 中)
  5. WebRTC的现状和未来:专访W3C WebRTC Chair Bernard Aboba(下)
  6. Teams中的快捷键让沟通协作更加高效
  7. 鸿蒙系统大疆,华为操作系统“鸿蒙OS”来了!
  8. dazhilu网站代码【完整篇】
  9. 用Python做一个简单的翻译工具
  10. BST B-树 B+树 B*树简介
  11. 在Pyramid中使用Mako模板以及默认和.html后缀关联
  12. html图片下载链接怎么弄_html 导入图片
  13. morning 是字符串的内容变成good_小洁详解《R数据科学》--第十章 使用stringr处理字符串(上)...
  14. 学习爬虫之Scrapy框架学习(3)---豆瓣top250电影完整版信息获取及如何存储到mysql数据库;Scrapy shell和Scrapy选择器;使用到日志的学习!
  15. 机器学习——回归——一元线性回归
  16. 掉进悬崖的小白,捡到python基础秘籍,学习第一周——语法基础,小游戏,无脑循环
  17. leetcode:1838. 最高频元素的频数【排序 + 前缀和 + 二分 + 思维】
  18. 站长必懂!什么是CPM、CPC、CPA、CPR?
  19. IOS微信下问题1 底部导航栏导致标签位置偏移
  20. 教你四个步骤在Word中设计毕业论文目录

热门文章

  1. 撒花!机器学习圣经 PRML 出 Python 复现代码了!
  2. Mysql高级调优篇——第二章:Explain执行计划深度剖析
  3. Dubbo基础专题——第四章(Dubbo整合Nacos分析细节点)
  4. Python设计模式-适配器模式
  5. TCP 客户端程序开发
  6. python报错 ValueError: dictionary update sequence element #0 has length 1; 2 is require
  7. centos上安装anaconda并配置虚拟环境
  8. intellij idea中去除@Autowired注入对象的红色波浪线提示
  9. python基础-变量运算符(3)
  10. 科技发展给保险行业带来了什么改变?