[不花钱站长]:从免费域名开始[0元] Oracle永久免费VPS[0元] VPS环境搭建免费脚本[0元] 秒变大盘挂载免费网盘[0元] 小白免费采集器1天500W[0元] CF免费DNS+CDN服务[0元]
[零基础网赚]:撸本站免费源码[0元] 网站强引免费蜘蛛法[0元] 图片视频文件免费存储[0元] 外链轻松发布免费友链[0元] 入坑免费教程学习源代码[0元] 网上百种+赚钱联盟推荐[?元]

↑↑VPS推荐网 WWW.VPS.COM.IN 稳定 便宜 免备案↑↑


您现在的位置是:首页 > 全球[VPS测评] >  永久免费VPS 香港VPS,国外永久免费VPS

PHP 判断 IP 是否在指定 IP 段内的类

全球[VPS测评]来源:VPS推荐网点击:1471
【性价之王】【线路之王】【价格之王】【配置之王】
【免费之王】【香港首推】【梯子之王】【独服之王】
PHP 判断 IP 是否在指定 IP 段内的类

说明:

检测一个 IP 地址是否在规定网段内的类。IP 在指定 IP 段范围内的话返回 TRUE 和信息“IP 检测通过”,IP 不在 IP 段范围内则返回 FALSE 和错误信息,错误信息可以从属性“msg”中获得,详见用法和代码。

代码:

<?php class ipCheck { public $ipRangeStr = '10.0.0.1/8'; public $msg = ''; function __construct($ipRangeStr){   !empty($ipRangeStr) ? $this->ipRangeStr = $ipRangeStr : ''; } function check($ip = '') {   empty($ip) && $ip = $this->getClientIp();     # 判断检测类型   if (FALSE !== strpos($this->ipRangeStr,'-')){    $type = 'size'; // 简单比大小:10.0.0.1-254 OR 10.0.0.1-10.0.0.254   }else if(FALSE !== strpos($this->ipRangeStr,'/')){    $type = 'mask'; // 掩码比大小:10.0.0.1/24   }else{    $this->msg = '错误的 IP 范围值';    return FALSE;   }   # 分析 IP 范围   if ('size' === $type){    $ipRangeStr = explode('-',$this->ipRangeStr);    $ipAllowStart = $ipRangeStr[0];    $ipAllowEnd = $ipRangeStr[1];    if (FALSE === strpos($ipAllowEnd,'.')){ # 10.0.0.254 OR 254     $ipAllowElmArray = explode('.',$ipAllowStart);     $ipAllowEnd = $ipAllowElmArray[0] . '.' .          $ipAllowElmArray[1] . '.' .          $ipAllowElmArray[2] . '.' .          $ipAllowEnd;    }   }else if ('mask' === $type){    $ipRangeStr = explode('/',$this->ipRangeStr);    $ipRangeIP = $ipRangeStr[0];    # 获取掩码中最后一位非零数的值    $ipRangeMask = (int)$ipRangeStr[1];    $maskElmNumber = floor($ipRangeMask/8); # 保留 IP 前几段    $maskElmLastLen = $ipRangeMask % 8; # 255.255.here.0    $maskElmLast = str_repeat(1,8-$maskElmLastLen);    $maskElmLast = bindec($maskElmLast); # 掩码中 IP 末段最大值(十进制)       // 获取 IP 段开始、结束值    $ipRangeIPElmArray = explode('.',$ipRangeIP);    if (0 == $maskElmNumber){     $ipAllowStart = '0.0.0.0';     $ipAllowEnd = $maskElmLast . '.254.254.254';    }else if (1 == $maskElmNumber){     $ipAllowStart = $ipRangeIPElmArray[0] . '.' . '0.0.0';     $ipAllowEnd = $ipRangeIPElmArray[0] . '.' . $maskElmLast . '.254.254';    }else if (2 == $maskElmNumber){     $ipAllowStart = $ipRangeIPElmArray[0] . '.' . $ipRangeIPElmArray[1] . '.' . '0.0';     $ipAllowEnd = $ipRangeIPElmArray[0] . '.' . $ipRangeIPElmArray[1] . '.' . $maskElmLast . '.254';    }else if (3 == $maskElmNumber){     $ipAllowStart = $ipRangeIPElmArray[0] . '.' . $ipRangeIPElmArray[1] . '.' . $ipRangeIPElmArray[2] . '.' . '0';     $ipAllowEnd = $ipRangeIPElmArray[0] . '.' . $ipRangeIPElmArray[1] . '.' . $ipRangeIPElmArray[2] . '.' . $maskElmLast;    }else if (4 == $maskElmNumber){     $ipAllowEnd = $ipAllowStart = $ipRangeIP;    }else{     $this->msg = '错误的 IP 段数据';     return $this->msg;    }   }else{    $this->msg = '错误的 IP 段类型';    return $this->msg;   }   // 检测 IP   $ipAllowStart = $this->getDecIp($ipAllowStart);   $ipAllowEnd = $this->getDecIp($ipAllowEnd);   $ip = $this->getDecIp($ip);   if (!empty($ip)){    if ($ip <= $ipAllowEnd && $ip >= $ipAllowStart){     $this->msg = 'IP 检测通过';     return TRUE;    }else{     $this->msg = '此为被限制 IP';     return FALSE;    }   }else{    FALSE === ($this->msg) && $this->msg == '没有提供待检测 IP'; // getClentIp() 是否返回 false    return $this->msg; // 没有获取到客户端 IP,返回   } } // 10 进制 IP function getDecIp($ip){   $ip = explode(".", $ip);   return $ip[0]*255*255*255+$ip[1]*255*255+$ip[2]*255+$ip[3]; } // 获取客户端 IP function getClientIp(){   if(isset($_SERVER['REMOTE_ADDR'])){    return $_SERVER['REMOTE_ADDR'];   }else{    $this->msg = '不能获取客户端 IP';    return FALSE;   } } } ?>

用法:

$ipCheck = new ipCheck('192.168.1.1-192.168.1.254'); echo (TRUE === $ipCheck ->check('192.168.1.45')) ? '在范围内' : $ipCheck->msg;

 

$ipCheck = new ipCheck('192.168.1.1-254'); echo (TRUE === $ipCheck ->check('192.168.1.45')) ? '在范围内' : $ipCheck->msg;

 

$ipCheck = new ipCheck('192.168.1.1/24'); echo (TRUE === $ipCheck ->check('192.168.1.45')) ? '在范围内' : $ipCheck->msg;

猜你可能想看的VPS


转载请注明原文地址:http://140.238.13.167:12355/read-211226.html

下一篇       上一篇