/**
     * 判断IP是否在某个网络内
     * @param $ip
     * @param $network
     * @return bool
     */
    public static function ipInNetwork($ip, $network)
    {
        $ip = (double) (sprintf("%u", ip2long($ip)));
        $s = explode('/', $network);
        $network_mark = (pow(2, 32)-1) ^ (pow(2, 32-$s[1]) - 1);
        $network_len = pow(2, 32 - $s[1]);
        $network_start = (double) (sprintf("%u", ip2long($s[0])));
        $network_start = ($network_mark & $network_start) + 1;
        $network_end = $network_start + $network_len - 3;
        if ($ip >= $network_start && $ip <= $network_end)
        {
            return true;
        }
        return false;
    }

标签: none

添加新评论