本文目录一览:
1、php高手来,求禁止ip并且转发url代码
2、求一段PHP限制IP及IP段访问的代码,拜托了。。
3、有人用软件反复向我的网站post请求,php程序如防止来自同一IP的攻击?
4、PHP中限制IP段访问、禁止IP提交表单的代码
5、限制ip地址段访问的php代码
php高手来,求禁止ip并且转发url代码
?php
//加IP访问限制
if(getenv('HTTP_CLIENT_IP') strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
$userip = getenv('HTTP_CLIENT_IP');
} elseif(getenv('HTTP_X_FORWARDED_FOR') strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
$userip = getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('REMOTE_ADDR') strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
$userip = getenv('REMOTE_ADDR');
} elseif(isset($_SERVER['REMOTE_ADDR']) $_SERVER['REMOTE_ADDR'] strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
$userip = $_SERVER['REMOTE_ADDR'];
}
$ip_arr = explode('.', $userip);
#限制的ip段,假设是192.168.*.*
if (!(($ip_arr[0] == '192' $ip_arr[1]=='168') )){
header("");
exit;
}else
{
header("");
exit;
}
?
求一段PHP限制IP及IP段访问的代码,拜托了。。
正确代码
function check_ip(){
$ALLOWED_IP=array('192.168.2.*','127.0.0.1','192.168.2.49');
$IP=getIP();
$check_ip_arr= explode('.',$IP);//要检测的ip拆分成数组
#限制IP
if(!in_array($IP,$ALLOWED_IP)) {
foreach ($ALLOWED_IP as $val){
if(strpos($val,'*')!==false){//发现有*号替代符
$arr=array();//
$arr=explode('.', $val);
$bl=true;//用于记录循环检测中是否有匹配成功的
for($i=0;$i4;$i++){
if($arr[$i]!='*'){//不等于* 就要进来检测,如果为*符号替代符就不检查
if($arr[$i]!=$check_ip_arr[$i]){
$bl=false;
break;//终止检查本个ip 继续检查下一个ip
有人用软件反复向我的网站post请求,php程序如防止来自同一IP的攻击?
无论使用PHP还是Apache(.htaccess)的手段,这个IP的请求还是被彻底执行了。CPU还是被占用了,虽然可能会占用的稍微少一点。
所以通过服务器设置,比如在Linux使用iptables防火墙。或者使用其他的前置的硬件防火墙。过滤这种同一IP在短时间内的不间断访问。这才是有效的手段。
PHP中限制IP段访问、禁止IP提交表单的代码
我们只要在feedback.php中添加下面的代码进行判断就可以了。
注意:下边只是一个PHP限制IP的实例代码,如果您打算应用到CMS中,请自行修改,或者如果您正在使用DEDECMS,可以联系本站。
代码如下:
?php
//加IP访问限制
if(getenv('HTTP_CLIENT_IP')
strcasecmp(getenv('HTTP_CLIENT_IP'),
'unknown'))
{
$userip
=
getenv('HTTP_CLIENT_IP');
}
elseif(getenv('HTTP_X_FORWARDED_FOR')
strcasecmp(getenv('HTTP_X_FORWARDED_FOR'),
'unknown'))
{
$userip
=
getenv('HTTP_X_FORWARDED_FOR');
}
elseif(getenv('REMOTE_ADDR')
strcasecmp(getenv('REMOTE_ADDR'),
'unknown'))
{
$userip
=
getenv('REMOTE_ADDR');
}
elseif(isset($_SERVER['REMOTE_ADDR'])
$_SERVER['REMOTE_ADDR']
strcasecmp($_SERVER['REMOTE_ADDR'],
'unknown'))
{
$userip
=
$_SERVER['REMOTE_ADDR'];
}
//限制ip
if
($userip=='27.37.188.128'){
header("location:");//被禁止后跳转到脚本之家站
exit;
}
//限制ip段
$ip_arr
=
explode('.',
$userip);
#限制的ip段,假设是192.168.*.*
if
(!(($ip_arr[0]
==
'192'
$ip_arr[1]=='168')
)){
header("location:");//被禁止后跳转到脚本之家素材站
exit;
}else{
header("location:");//正常IP则直接访问脚本之家首页
exit;
}
?
限制ip地址段访问的php代码
?php
$userip = $_SERVER['REMOTE_ADDR']; //获得用户ip
$userips = explode(".", $userip);//把获得的ip切开成数组
if(($userips[0]=195 $userips[0]=195)($userips[1]=163 $userips[1]=163)($userips[2]=079 $userips[2]=072)($userips[3]=255 $userips[3]=000)){
echo "您的ip不符!";
exit;
}else{
echo "通过验证!";
}
?
我的思路就是这样的
获得用户的IP 用"."分割成数组
再将 限制IP断 分别用"."分割成数组
然后判断用户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;$ icount($ ip_lib);$ i++){
if(ereg($ thenetip,$ ip_lib[$ i])){
$ allow=1;
break;
}
}
if ($ allow==1)
{
echo "验证通过";
}
else {
echo "scriptlocation.href='Error.php';/script";
}
?