$ip = get_client_ip_extend();//获取当前访问者的ip

$logFilePath = '/ippath/';//日志记录文件保存目录

$fileht = '.htaccess2';//被禁止的ip记录文件

$allowtime = 60;//防刷新时间

$allownum = 10;//防刷新次数

$allowRefresh = 120;//在允许刷新次数之后加入禁止ip文件中

if (!file_exists($fileht)) {

file_put_contents($fileht, '');

}

$filehtarr = @file($fileht);

if (in_array($ip . "\r\n", $filehtarr)) {

$message = '警告:你的IP已经被禁止了!';

if ($type === 'API') {

return $message;

}

$this->error($message);

}

//加入禁止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 < $allowtime) {

if ($iptem != $checkip) {

$str .= $v;

} else {

$yesno = false;

if ($uritem != $checkuri) {

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

} else if ($numtem < $allownum) {

$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;

$message = '警告:不要刷新的太频繁!';

if ($type === 'API') {

return $message;

}

$this->error($message);

}

}

}

}

if ($yesno) {

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

}

file_put_contents($file, $str);

?>

php ip 访问频繁,php刷新过于频繁自动加ip黑名单相关推荐

  1. 计算机限制ip访问,如何对某个端口限制IP访问 比如 针对1521端口 只允许某个IP访问Unix系统 -电脑资料...

    如何对某个端口限制IP访问比如针对1521端口只允许某个IP访问 leon 回复于:2001-12-12 08:26:48 哈哈,你也遇到和我一样的问题,是oracle的端口吧! 我也还没有找到解决的 ...

  2. java频繁fullgc,fullgc过于频繁该怎么解决?(问题8)

    fullgc过于频繁有可能会造成oom,有可能不会. 首先明确一下,这篇文章的重点是分析后面一种情况,即应用在频繁的fullgc,但并没有出现oom. 我们来想一下为什么会出现fullgc,触发原因有 ...

  3. php限制ip访问次数 并发_[转]nginx限制某个IP同一时间段的访问次数

    如何设置能限制某个IP某一时间段的访问次数是一个让人头疼的问题,特别面对恶意的ddos攻击的时候.其中CC攻击(Challenge Collapsar)是DDOS(分布式拒绝服务)的一种,也是一种常见 ...

  4. linux iptables 如何设置允许几个 ip访问,Linux防火墙iptables限制几个特定ip才能访问服务器。...

    匿名用户 1级 2016-08-05 回答 linux下要使用iptables限制只有指定的ip才能访问本机则需要先设置一个默认的规则 iptables有默认的规则,它可以适用于所有的访问 因为只有指 ...

  5. linux ip命令dhcp,嵌入式linux通过DHCP自动获取IP地址实现获取

    前提:系统已经实现DNS(即使用ping www.baidu.com测试时能ping通). 1.在内核中添加以下选项: Networking  ---> [*] Networking suppo ...

  6. 自动ip的计算机共享打印,局域网内自动获取ip地址怎么设置打印机共享文件夹...

    在局域网环境中,为了尽可能地节省办公成本,很多用户都会选择在局域网中架设.部署共享打印机,以便在单位的任何角落处都能方便.自如地进行打印操作.下面是学习啦小编为大家整理的关于局域网内自动获取ip地址怎 ...

  7. php限制ip访问次数 并发_PHP实现redis限制单ip、单用户的访问次数功能示例

    本文实例讲述了PHP实现redis限制单ip.单用户的访问次数功能.分享给大家供大家参考,具体如下: 有时候我们需要限制一个api或页面访问的频率,例如单ip或单用户一分钟之内只能访问多少次 类似于这 ...

  8. ip访问次数统计 nginx_Linux分析Nginx日志统计IP访问次数的shell脚本

    平时运维遇到最多的就是nginx的日志分析了,要时常做系统监控,检查IP的访问次数是否有异常,防止恶意访问. 假设我的nginx日志如下: ....... 211.253.43.23 - - [03/ ...

  9. 怎样解决ip访问受限问题

    现在是互联网时代.一些网络工作者需要收集一些网站的数据,收集数据需要频繁访问网站.为了有效控制网站流量,保证用户访问速度,一些目标网站会限制单个IP访问请求次数.对于爬虫工作者来说,目标网站限制访问的 ...

  10. redis 公网ip访问_Redis很重要,怎么只允许指定IP访问?

    在 Linux 中安装了redis 服务,当在客户端通过远程连接的方式连接时,报could not connect错误. 错误的原因很简单,就是没有连接上redis服务,由于redis采用的安全策略, ...

最新文章

  1. python详细安装教程linux-python 在linux系统的安装教程
  2. 《DB2性能管理与实战》导读
  3. 临近年关,修复ASP.NET Core因浏览器内核版本引发的单点登录故障
  4. MSDN 教程短片 WPF 20(绑定3-ObjectDataProvider)
  5. android textview获取背景颜色,android – 从textview获取背景颜色而不使用ColorDrawable(API 11)...
  6. html5-table布局
  7. 你身边有没有“万事不求人”的人?他们后来怎么样了?
  8. Android中通过反射和getResource()得到id的方式去改变View的显示效果
  9. linux 下的文件搜索、可执行文件搜索
  10. fzu 2037 Maximum Value Problem
  11. 读取SPRING XML配置文件中的hbm.xml 文件列表.
  12. BZOJ5219[Lydsy2017省队十连测] 最长路径
  13. Hadoop学习之hadoop安装、JDK安装、集群启动(完全分布式)
  14. Cplex20.1版本bin包Linux安装过程
  15. 资源分享·病毒样本下载资源分享
  16. 计算机怎么开启tftp服务器,Win7系统如何开启TFTP服务器?开启TFTP服务器方法
  17. double IE之H3CIE之路--我的H3CIE考试经历
  18. Win10-C盘清理方法全攻略(从剩余9G到剩49G)
  19. cuda中pinned memory(page-locked memory)
  20. 数字信号处理——窗函数

热门文章

  1. 摩斯电码php源码,PHP实现基于文本的莫斯电码生成器
  2. a标签下载文件 自定义下载文件名
  3. 交换机cad图例_各种弱电系统的CAD图纸,包含图例、大样图、系统图及原理图等...
  4. Git 常用命令大全
  5. hashmap java 排序_HashMap的排序
  6. STM32实现NRF24L01通信
  7. 五年级上册用计算机探索规律思维导图,五年级上册数学第一单元思维导图 包括小数乘整数小数乘小数积的...
  8. 法兰克焊接机器人编程入门_Fanuc ARC MATE 焊接机器人操作编程.pdf
  9. Navicat Premium相关注册码
  10. 阿里面试真题!《阿里云技术面试红宝书》!赶紧保存下载!