php ip 访问频繁,php刷新过于频繁自动加ip黑名单
$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黑名单相关推荐
- 计算机限制ip访问,如何对某个端口限制IP访问 比如 针对1521端口 只允许某个IP访问Unix系统 -电脑资料...
如何对某个端口限制IP访问比如针对1521端口只允许某个IP访问 leon 回复于:2001-12-12 08:26:48 哈哈,你也遇到和我一样的问题,是oracle的端口吧! 我也还没有找到解决的 ...
- java频繁fullgc,fullgc过于频繁该怎么解决?(问题8)
fullgc过于频繁有可能会造成oom,有可能不会. 首先明确一下,这篇文章的重点是分析后面一种情况,即应用在频繁的fullgc,但并没有出现oom. 我们来想一下为什么会出现fullgc,触发原因有 ...
- php限制ip访问次数 并发_[转]nginx限制某个IP同一时间段的访问次数
如何设置能限制某个IP某一时间段的访问次数是一个让人头疼的问题,特别面对恶意的ddos攻击的时候.其中CC攻击(Challenge Collapsar)是DDOS(分布式拒绝服务)的一种,也是一种常见 ...
- linux iptables 如何设置允许几个 ip访问,Linux防火墙iptables限制几个特定ip才能访问服务器。...
匿名用户 1级 2016-08-05 回答 linux下要使用iptables限制只有指定的ip才能访问本机则需要先设置一个默认的规则 iptables有默认的规则,它可以适用于所有的访问 因为只有指 ...
- linux ip命令dhcp,嵌入式linux通过DHCP自动获取IP地址实现获取
前提:系统已经实现DNS(即使用ping www.baidu.com测试时能ping通). 1.在内核中添加以下选项: Networking ---> [*] Networking suppo ...
- 自动ip的计算机共享打印,局域网内自动获取ip地址怎么设置打印机共享文件夹...
在局域网环境中,为了尽可能地节省办公成本,很多用户都会选择在局域网中架设.部署共享打印机,以便在单位的任何角落处都能方便.自如地进行打印操作.下面是学习啦小编为大家整理的关于局域网内自动获取ip地址怎 ...
- php限制ip访问次数 并发_PHP实现redis限制单ip、单用户的访问次数功能示例
本文实例讲述了PHP实现redis限制单ip.单用户的访问次数功能.分享给大家供大家参考,具体如下: 有时候我们需要限制一个api或页面访问的频率,例如单ip或单用户一分钟之内只能访问多少次 类似于这 ...
- ip访问次数统计 nginx_Linux分析Nginx日志统计IP访问次数的shell脚本
平时运维遇到最多的就是nginx的日志分析了,要时常做系统监控,检查IP的访问次数是否有异常,防止恶意访问. 假设我的nginx日志如下: ....... 211.253.43.23 - - [03/ ...
- 怎样解决ip访问受限问题
现在是互联网时代.一些网络工作者需要收集一些网站的数据,收集数据需要频繁访问网站.为了有效控制网站流量,保证用户访问速度,一些目标网站会限制单个IP访问请求次数.对于爬虫工作者来说,目标网站限制访问的 ...
- redis 公网ip访问_Redis很重要,怎么只允许指定IP访问?
在 Linux 中安装了redis 服务,当在客户端通过远程连接的方式连接时,报could not connect错误. 错误的原因很简单,就是没有连接上redis服务,由于redis采用的安全策略, ...
最新文章
- python详细安装教程linux-python 在linux系统的安装教程
- 《DB2性能管理与实战》导读
- 临近年关,修复ASP.NET Core因浏览器内核版本引发的单点登录故障
- MSDN 教程短片 WPF 20(绑定3-ObjectDataProvider)
- android textview获取背景颜色,android – 从textview获取背景颜色而不使用ColorDrawable(API 11)...
- html5-table布局
- 你身边有没有“万事不求人”的人?他们后来怎么样了?
- Android中通过反射和getResource()得到id的方式去改变View的显示效果
- linux 下的文件搜索、可执行文件搜索
- fzu 2037 Maximum Value Problem
- 读取SPRING XML配置文件中的hbm.xml 文件列表.
- BZOJ5219[Lydsy2017省队十连测] 最长路径
- Hadoop学习之hadoop安装、JDK安装、集群启动(完全分布式)
- Cplex20.1版本bin包Linux安装过程
- 资源分享·病毒样本下载资源分享
- 计算机怎么开启tftp服务器,Win7系统如何开启TFTP服务器?开启TFTP服务器方法
- double IE之H3CIE之路--我的H3CIE考试经历
- Win10-C盘清理方法全攻略(从剩余9G到剩49G)
- cuda中pinned memory(page-locked memory)
- 数字信号处理——窗函数
热门文章
- 摩斯电码php源码,PHP实现基于文本的莫斯电码生成器
- a标签下载文件 自定义下载文件名
- 交换机cad图例_各种弱电系统的CAD图纸,包含图例、大样图、系统图及原理图等...
- Git 常用命令大全
- hashmap java 排序_HashMap的排序
- STM32实现NRF24L01通信
- 五年级上册用计算机探索规律思维导图,五年级上册数学第一单元思维导图 包括小数乘整数小数乘小数积的...
- 法兰克焊接机器人编程入门_Fanuc ARC MATE 焊接机器人操作编程.pdf
- Navicat Premium相关注册码
- 阿里面试真题!《阿里云技术面试红宝书》!赶紧保存下载!