当前位置:首页 > PHP >

php判断IP或者IP段是否在允许的范围内

时间:2020-07-31 16:12:15浏览:103 本站原创

本人原创,非喜勿喷
IP单独存放在txt文件内,一行一个规则,支持三种:
1、单独IP
2、带*的IP段
3、带-的IP段
限IPV4

txt例子如下:

106.85.10.20
219.153.*.*
219.101.216.176-180


PHP代码如下:

<?php
$UserIP = getIP();
$NoLimit = "0";
$Content = file_get_contents("1.txt");
$arr = explode("\n",$Content);
//上面这行注意,服务器是Linux系统无需修改,如为Win系统\n需要改为\r
foreach($arr as $IPFileLine)
{
	$IPType = "1";
	if(stripos($IPFileLine,"*")){
		$IPType = "2";
	}
	if(stripos($IPFileLine,"-")){
		$IPType = "3";
	}
	if($IPType==1 && $UserIP==$IPFileLine){
		$NoLimit = "1";
		break;
	}
	if($IPType==2){
		$IPFileLine = str_replace(".*","",$IPFileLine);
		$ArrSingleIP = explode(".", $IPFileLine);
		$ArrUserIP = explode(".", $UserIP);
		$CheckIP= "";
		for($i=0;$i<count($ArrSingleIP);$i++){
			$CheckIP .=  $ArrUserIP[$i].".";
		}
		if($CheckIP==$IPFileLine."."){
			$NoLimit = "1";
			break;
		}
	}
	if($IPType==3){
		$CheckIP= $SingleIP = "";
		$ArrSingleIP = explode(".", $IPFileLine);
		$ArrUserIP = explode(".", $UserIP);
		for($i=0;$i<3;$i++){
			$CheckIP .=  $ArrUserIP[$i].".";
			$SingleIP .=  $ArrSingleIP[$i].".";
		}
		if($CheckIP==$SingleIP){
			$ArrIPSection = explode("-", $ArrSingleIP[3]);
			if($ArrUserIP[3] >= $ArrIPSection[0] && $ArrUserIP[3] <= $ArrIPSection[1]){
				$NoLimit = "1";
				break;
			}
		}
	}
}
echo $NoLimit;

function getIP() {
	if (@$_SERVER["HTTP_X_FORWARDED_FOR"])
		$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
	else if (@$_SERVER["HTTP_CLIENT_IP"])
		$ip = $_SERVER["HTTP_CLIENT_IP"];
	else if (@$_SERVER["REMOTE_ADDR"])
		$ip = $_SERVER["REMOTE_ADDR"];
	else if (@getenv("HTTP_X_FORWARDED_FOR"))
		$ip = getenv("HTTP_X_FORWARDED_FOR");
	else if (@getenv("HTTP_CLIENT_IP"))
		$ip = getenv("HTTP_CLIENT_IP");
	else if (@getenv("REMOTE_ADDR"))
		$ip = getenv("REMOTE_ADDR");
	else
		$ip = "Unknown";
	return $ip;
}


返回变量是:$NoLimit  1为命中,0为否





上一篇:php等比缩放图片
下一篇:有搜索功能的下拉框插件chosen.jquery.js

发表评论

昵称:  验证码:

关于博主

博主

博主:BlueCode

职业:web程序

简介:2002年开始一直从事Web制作,网站运营,会PHP+MYSQL ASP+MSSQL,微信开发