PHP:如何检测IPv6是否在IPv6范围内?

PHP:如何检测IPv6是否在IPv6范围内?,php,ip,ipv6,Php,Ip,Ipv6,我有一个ipv6范围,但我不知道如何检测$\u服务器['REMOTE\u ADDRESS']是否在ipv6范围内?我需要帮助。感谢检查地址是否在某个范围内的最简单方法是将地址和范围限制转换为二进制,然后使用普通比较运算符: $first_in_range = inet_pton('2001:db8::'); $last_in_range = inet_pton('2001:db8::ffff:ffff:ffff:ffff'); $address = inet_pton($_SERVER['RE

我有一个ipv6范围,但我不知道如何检测$\u服务器['REMOTE\u ADDRESS']是否在ipv6范围内?我需要帮助。感谢

检查地址是否在某个范围内的最简单方法是将地址和范围限制转换为二进制,然后使用普通比较运算符:

$first_in_range = inet_pton('2001:db8::');
$last_in_range = inet_pton('2001:db8::ffff:ffff:ffff:ffff');

$address = inet_pton($_SERVER['REMOTE_ADDR']);

if ((strlen($address) == strlen($first_in_range))
&&  ($address >= $first_in_range && $address <= $last_in_range)) {
    // In range
} else {
    // Not in range
}

检查地址是否在范围内的最简单方法是将地址和范围限制转换为二进制,然后使用普通比较运算符:

$first_in_range = inet_pton('2001:db8::');
$last_in_range = inet_pton('2001:db8::ffff:ffff:ffff:ffff');

$address = inet_pton($_SERVER['REMOTE_ADDR']);

if ((strlen($address) == strlen($first_in_range))
&&  ($address >= $first_in_range && $address <= $last_in_range)) {
    // In range
} else {
    // Not in range
}

你的意思是检查它是否在子网中,还是检查它是否是ipv6或ipv4地址?你的意思是检查它是否在子网中,还是检查它是否是ipv6或ipv4地址?噢,我忘了inet\u pton的输出被视为字符串。在比较它们时,还必须检查字符串的长度,以防止IPv4地址与IPv6地址的第一部分匹配。我将修复这个示例。哦,我忘记了inet\u pton的输出被视为字符串。在比较它们时,还必须检查字符串的长度,以防止IPv4地址与IPv6地址的第一部分匹配。我会修正这个例子。