ip访问次数统计 nginx_PHP实现IP访问限制及提交次数的方法详解

一、原理

提交次数是肯定要往数据库里写次数这个数据的,比如用户登陆,当用户出错时就忘数据库写入出错次数1,并且出错时间,再出错写2,当满比如5次时提示不允许再登陆,请明天再试,然后用DateDiff计算出错时和now()的时间,如果大于24就再开放让他试。

封IP的话特别是给IP断就比较简单了,

先说给IP段开放的情况:先取出客户访问的IP,为了解释方便,设有IP192.168.6.2

现要开放IP段为192.168.*.*的断,给个比较容易看懂的代码吧:

url=split(ip,".") '这里的ip为客户端IP
fsip="192.168.*.*"  '允许的段,可以从数据库取出,也可以这么定义
fip=split(fsip,".")
if fip(0)=url(0) and fip(1)=url(1) then
response.write "您的IP被封"
else response.write "可以通过"
end if

其实禁某IP就跟上面的方法一样。或者干脆从数据库里取出IP和客户端的直接比较就好了。

一般会把数据库里的IP段设为双精度型的,那么就需要这些:

if Request.ServerVariables("HTTP_X_FORWARDED_FOR")="" then
IP=Request.ServerVariables("REMOTE_ADDR")
else
IP=Request.ServerVariables("HTTP_X_FORWARDED_FOR")
end if
sip=IP
cip=split(ip,".")
ip=256*256*256*cip(0)+256*256*cip(1)+256*cip(2)+cip(3)-1

上面的情况都是在数据库操作方面,没涉及cookies等。

其实封IP不是很理想,会影响无辜的人,有关的或许是因为动态IP逃过了。

二、封装实例

<?php
class IP{ //获取客户IP地址function getIpAdr(&$ip){$ip1=getenv("HTTP_X_FORWARDED_FOR");$ip2=getenv("HTTP_CLIENT_IP");$ip3=getenv("REMOTE_ADDR");if($ip1&&$ip1!='unknow')$ip=$ip1; else if($ip2&&$ip2!='unknow')$ip=$ip2; else if($ip3&&$ip3!='unknow')$ip=$ip3; else$ip='127.0.0.1';}
}
function get_netip($myip){ //只留客户IP地址的前三位$temp=explode(".",$myip);$netip.=$temp[0];$netip.=".";$netip.=$temp[1];$netip.=".";$netip.=$temp[2];return $netip;
}
$filename="test.ini";  //定义操作文件
$ip_lib=file($filename); //读取文件数据到数组中
$allow=0;
$IP=new IP;
$thisip="";
$IP->getIpAdr(&$thisip);
$thenetip=get_netip($thisip);
for ($i=0;$i<count($ip_lib);$i++){if(ereg($thenetip,$ip_lib[$i])){$allow=1;break;}
}
if ($allow==1)
{echo "验证通过";
} else {echo "<script>location.href='Error.php';</script>";
}

三、限制输入次数

1.页面需要先session_start();2.点击登陆的时候做判断,如果确定用户输入的密码是错误的

if(用户的密码是错误的){if(!empty($_SESSION['login_error'])){if($_SESSION['login_error'] == 3){exit("这里已经是第三次了");} else{$_SESSION['login_error'] = $_SESSION['login_error']++;}} else{$_SESSION['login_error'] = 1;}
}
以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要请戳这里链接 或者关注咱们下面的专栏
PHP大神进阶​zhuanlan.zhihu.com
0184aa70d60d288844011d24be97d9f7.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/523609.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++容器deque的用法

目录 1.deque容器概念 2.deque对象的构造 2.1deque对象的默认构造 2.2deque对象的带参数构造 3.deque头部和末尾的添加移除操作 4.deque的数据存取 5.deque与迭代器 6.deque的赋值 7.deque的大小 8.deque的插入 9.deque的删除 1.deque容器概念 deque容器概念 deque是…

AI时代,中国技术创新如何弯道超车?

2019 年 5 月 26 日 - 27 日&#xff0c;杭州国际博览中心&#xff0c;由工信部人才交流中心指导&#xff0c;CSDN 和数字经济人才发展中心主办的 CTA 核心技术及应用峰会圆满落下帷幕。本次大会聚焦机器学习、知识图谱等 AI 领域的热门技术&#xff0c;关注技术在行业中的实践…

JBOSS7启动与关闭

1.启动 进入Jboss的bin目录下 通过以下命令启动jboss ./standalone.sh启动没有问题&#xff0c;但是当你按你ctrl C退出后&#xff0c;jboss服务也关闭了&#xff0c;所以我们要使用后台启动方式&#xff1a; nohup ./standalone.sh&查看Jboss启动进程&#xff1a; tai…

容器云常见安全威胁与防范 | 技术干货

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;除了应对常见云平台和传统数据中心常见的安全威胁&#xff0c;容器云平台还存在一些自…

开启灯光就是近光吗_有用!科目三灯光模拟操作大全

科三考试第一项就是灯光模拟考试&#xff0c;要求考生在5秒之内根据相关语音播报完成相应操作。不少学员在这一项中出错&#xff0c;以至于科三考试还没开出几米就挂了&#xff01;今天通妹特地整理了灯光操作相关技巧&#xff0c;希望大家顺利通过科三第一关&#xff01;语音提…

vmware安装问题:Microsoft Runtime DLL安装程序未能完成安装

文章目录一、vmware安装问题&#xff1a;Microsoft Runtime DLL安装程序未能完成安装1.1 在输入%temp%1.2. 找到{ADC3121A-3EBA-4016-AF64-00B8FE017080}~setup结尾是~setup1.3. 打开该文件夹选择安装程序即可正常安装。一、vmware安装问题&#xff1a;Microsoft Runtime DLL安…

雾计算精华问答 | 雾计算与云计算的区别?

物联网对于数据的处理能力要求很高&#xff0c;怎么能够从庞大的数据海中挖掘一些有价值的信息对于物联网的发展至关重要&#xff0c;因此云计算&#xff0c;雾计算&#xff0c;边缘计算等等都将发挥其左右。今天先让我们来了解一下雾计算吧。1Q&#xff1a;雾计算是如何构成的…

【解决】-bash: ftp: command not found

今天在centos上使用ftp命令连接本机的FTP服务器&#xff08;本机FTP服务使用Vsftpd搭建&#xff09;&#xff0c;出现如下的错误提示&#xff1a;-bash: ftp: command not found 查询相关资料&#xff0c;发现很有可能是FTP命令没有安装。 通过yum方式安装FTP命令: yum insta…

kodi pvr 不能安装_「保姆级教程」家庭影音多媒体中心第5节—KODI18安装/设置IPTV...

一、本章前言&#xff1a;上一章节万晓博SEO带领大学习安装了kodi18播放群晖NAS或者本地视频教程&#xff0c;本节课我们讲讲如何使用kodi播放器看IPTV央视/地方卫视频道&#xff0c;我们遐想下&#xff0c;如果我们使用kodi播放IPTV&#xff0c;这样既可以播放群晖nas或者本地…

使用云原生buildpacks将你的代码转换成Docker Image | 技术干货

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;七年前buildpack技术开源之时&#xff0c;我们就看到了这项技术将大大简化应用的发布过…

Windiws环境安装轻量级文件服务器ftpserver

Windiws环境安装轻量级文件服务器ftpserver 文章目录1. 在线下载&#xff1a;2. 解压3. 以管理员身份运行4. 启动5. 浏览器验证6. 输入账号和口令7. 创建测试文件8. 验证效果图1. 在线下载&#xff1a; 点击即可下载&#xff1a;http://learning.happymmall.com/ftpserver/FTP…

每年一波FPGA系列新品,这次Achronix专为AI/ML应用打造……

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;近日&#xff0c;美国eFPGA IP企业Achronix在京召开产品发布会&#xff0c;推出了全新…

折线图x轴的日期会超出_matplotlib之折线图(代码+解析)

作者&#xff1a;禹棋赢本文推荐一个仓库Plot-Pictures-Tutorial-for-Paper​github.com该仓库会总结论文中常见图形的画法&#xff0c;本节介绍折线图&#xff1a;一、折线图绘制折线图我们通常使用plot函数画曲线&#xff08;折线&#xff09;。每一个plot函数对应一条曲线&a…

K8S精华问答 | Kubernetes集群常见问题

作为是Google开源的容器集群管理系。在Docker技术的基础上&#xff0c;为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能&#xff0c;提高了大规模容器集群管理的便捷性。今天&#xff0c;我们就来看看关于k8s的精华问答吧。1Q:什么是Kubernetes&…

Linux使用yum install 安装程序时,提示“另外一个程序锁定了 yum;等待它退出……”

Linux使用yum install 安装程序时&#xff0c;提示“另外一个程序锁定了 yum&#xff1b;等待它退出……” https://www.cnblogs.com/qf123/p/9909790.html 原因&#xff1a; yum命令一次只能安装一个软件&#xff0c;所以当你下载安装第二个软件包时&#xff0c;系统进程锁会…

小鹏汽车吴新宙:要做全国第一 | 人物志

戳蓝字“CSDN云计算”关注我们哦&#xff01;人物志&#xff1a;观云、盘点、对话英雄。以云计算风云人物为核心&#xff0c;聚焦个人成长、技术创新、产业发展&#xff0c;还原真实与鲜活&#xff01;在国内自动驾驶汽车领域&#xff0c;成立于2014年的小鹏汽车&#xff0c;因…

验证布局中控件的父窗口

验证布局中的控件的父窗口概述示例开发环境项目运行结果结论番外概述 平时在创建一个窗口类的子空间时&#xff0c;一般需要先创建布局&#xff0c;将子控件添加到窗口的布局中。子控件没有显示的指定父窗口时&#xff0c;那么这个布局中的控件的父窗口是布局还是这个窗口类呢…

Centos6.8安装Nginx+域名转发

2分钟搭建企业轻量级反向代理服务器 文章目录一、linux 环境 安装nginx二、需求分析下载/解压/启动tomcat2.1 需求分析2.2 Linux环境下载和配置Tomcat三、nginx域名转发场景13.1 编辑nginx配置文件3.2 创建配置文件中的目录3.3 创建一个配置文件四、编辑配置文件添加映射信息4.…

手机有一个时钟的标志_STM32F7系统配置控制器(SYSCFG)及复位和时钟控制(RCC)...

这篇文章带大家看一下STM32F7的系统配置控制器。系统配置控制器主要用于&#xff1a;1、 选择以太网PHY接口&#xff1b;2、 交换FMC SDRAM存储区域与NOR/PSRAM存储区域&#xff1b;3、 管理GPIO外部中断线连接&#xff1b;在系统控制寄存器里有一个bit位来选择使用哪个选项字定…

Nignx负载均衡

2分钟搭建企业轻量级负载均衡服务器 文章目录一、启动2个tomcat端口为8080和8081二、在/usr/local/nginx/conf/vhost创建static.imooc.com.conf文件一、启动2个tomcat端口为8080和8081 二、在/usr/local/nginx/conf/vhost创建static.imooc.com.conf文件 内容如下&#xff1a;…