加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 检查IP地址是否在网络中

发布时间:2020-12-13 17:10:07 所属栏目:PHP教程 来源:网络整理
导读:我正在寻找一个函数来确定给定的IPv4地址是否在给定的网络中. 它将类似于this;但是,如果没有必要,我不想安装完整的框架或重新发明轮子. 这个想法类似于以下内容: function IsInNetwork($givenIP,$networkIP,$netmask) { // ???}$valid = IsInNetwork("10.0.
我正在寻找一个函数来确定给定的IPv4地址是否在给定的网络中.

它将类似于this;但是,如果没有必要,我不想安装完整的框架或重新发明轮子.

这个想法类似于以下内容:

function IsInNetwork($givenIP,$networkIP,$netmask) {
   // ???
}

$valid = IsInNetwork("10.0.9.35","10.0.8.0","255.255.254.0");

– 编辑 –

在Rich Adams的帮助下,他向我指出了正确的方向并提出了以下建议:

function IsInNetwork2($givenIP,$netmask) 
{
    $ipaddr = ip2long($givenIP);
    $netip = ip2long($networkIP);
    $netmask = (ip2long($netmask) * -1) + $netip;

    if ($ipaddr >= $netip && $ipaddr <= $netmask){
        return true;
    } else {
        return false;
    }
}

解决方法

像这样的东西应该工作,

function IsInNetwork($givenIP,$netmask)
{
    return ((ip2long($givenIP) & ip2long($networkIP)) == ip2long($network));
}

$valid = IsInNetwork("10.0.9.35","255.255.254.0"); // true

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读