这篇文章主要介绍了PHP实现限制IP访问及提交次数的方法,涉及php针对客户端来访IP的获取、判断以及结合session记录IP访问次数等相关操作技巧,需要的朋友可以参考下
本文实例讲述了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逃过了。
二、封装实例
getIpAdr(&$thisip); $thenetip=get_netip($thisip); for ($i=0;$ilocation.href='Error.php';"; }
三、限制输入次数
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; } }
Atas ialah kandungan terperinci PHP限制相同IP多次提交的解决办法. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Bagaimana untuk membuka fail php
Bagaimana untuk mengalih keluar beberapa elemen pertama tatasusunan dalam php
Apa yang perlu dilakukan jika penyahserialisasian php gagal
Bagaimana untuk menyambungkan php ke pangkalan data mssql
Bagaimana untuk menyambung php ke pangkalan data mssql
Bagaimana untuk memuat naik html
Bagaimana untuk menyelesaikan aksara bercelaru dalam PHP
Bagaimana untuk membuka fail php pada telefon bimbit