您可以使用ip2long
http://php.net/manual/en/function.ip2long.php将包含(IPv4)互联网协议点地址的字符串转换为正确的地址,您可以有一个范围
echo ip2long('192.168.1.1');//-1062731519
echo ip2long('192.168.1.6');//-1062731514
有了这个你可以检查用户的IP范围,......是否有效或......
例如,如果用户 ip 在 192.168.1.1-192.168.1.6 范围内echo 'hello';
//http://www.php.net/manual/en/function.ip2long.php#81030
function in_ip_range($ip_one, $ip_two=false){
if($ip_two===false){
if($ip_one==$_SERVER['REMOTE_ADDR']){
$ip=true;
}else{
$ip=false;
}
}else{
if(ip2long($ip_one)<=ip2long($_SERVER['REMOTE_ADDR']) && ip2long($ip_two)>=ip2long($_SERVER['REMOTE_ADDR'])){
$ip=true;
}else{
$ip=false;
}
}
return $ip;
}
//usage
if(in_ip_range('192.168.1.1','192.168.1.6')){
echo 'hello';
}
ip组
$list=array(
'192.168.1.1',
'192.168.1.2',
'192.168.1.3',
'192.168.1.5',
'192.168.1.6',
'192.168.1.6',
'192.168.1.9'
);
$Grouplist='';
foreach($list as $ip){
$ip2long=ip2long($ip);
if(is_array($Grouplist)){
$is_group=false;
foreach($Grouplist as $Key=>$Range){
$Range=explode("/",$Range);
if(($Range[0]-1)<$ip2long and $ip2long<($Range[1]+1)){
$is_group=true;
continue;
}elseif(($Range[0]-1)==$ip2long){
$Grouplist[$Key]=$ip2long.'/'.$Range[1];
$is_group=true;
}elseif(($Range[1]+1)==$ip2long){
$Grouplist[$Key]=$Range[0].'/'.$ip2long;
$is_group=true;
}
}
if(!$is_group)
{
$Grouplist[]=($ip2long).'/'.($ip2long);
}
}else{
$Grouplist[]=($ip2long).'/'.($ip2long);
}
}
print_r($Grouplist);
输出:
Array
(
[0] => -1062731519/-1062731517
[1] => -1062731515/-1062731514
[2] => -1062731511/-1062731511
)
如果转换为 ip 组是
foreach($Grouplist as $Val){
$Range=explode("/",$Val);
echo long2ip($Range[0])."/".long2ip($Range[1])."\n";
}
输出
192.168.1.1/192.168.1.3
192.168.1.5/192.168.1.6
192.168.1.9/192.168.1.9