Я хочу проверить, включен ли IP в белый список, но IPv6-адреса могут иметь разные представления:
Например 2001:0DB8:0:0:1::1
это краткая форма 2001:0db8:0000:0000:0001:0000:0000:0001
,
Таким образом, сравнение строк не работает. Как я могу узнать, что два адреса равны?
использование inet_pton.
function is_ip_equal($ip1, $ip2) {
return inet_pton($ip1) == inet_pton($ip2);
}
(Однако, это будет работать, только если PHP не был скомпилирован с --disable-ipv6 option
, Вы можете проверить это с помощью if (!defined('AF_INET6')) echo "IPv6 support was disabled";
).
Других решений пока нет …