Как я могу проверить в PHP, если 2 IPv6-адреса равны?

Я хочу проверить, включен ли IP в белый список, но IPv6-адреса могут иметь разные представления:

Например 2001:0DB8:0:0:1::1 это краткая форма 2001:0db8:0000:0000:0001:0000:0000:0001,

Таким образом, сравнение строк не работает. Как я могу узнать, что два адреса равны?

0

Решение

использование 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";).

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]