Можно ли в php определить и отобразить ipv6 адрес ? $_SERVER['REMOTE_ADDR'] - показывает обычный ip можно конечно сравнение сделать, если не ipv4 то значит ipv6 Суперглобальный массив $_SERVER может отобразить ipv6 ? например тот же $_SERVER['REMOTE_ADDR'] заставить это делать понятно что ipv6 ещё мало распространен и нова среди использования, но вычеслять его вскорем придётся, а так же блокировать, фильтровать по geoip и все другие манипуляции. получаетя что php не поддерживает ipv6? нет таких переменных которые отображают его значение ? php $_SERVER['REMOTE_ADDR'] не определяет ipv6 да и разве что такими способами определяю, но это не надёжно: PHP: <?php function getRealIpAddr() { if (!empty($_SERVER['HTTP_CLIENT_IP'])) { $ip=$_SERVER['HTTP_CLIENT_IP']; } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; } else { $ip=$_SERVER['REMOTE_ADDR']; } return $ip; } $ip_adres = getRealIpAddr(); if ( array_key_exists('addr', $_GET) ) $ip = $_GET['addr']; else $ip = $ip_adres; $v6 = preg_match("/^[0-9a-f]{1,4}:([0-9a-f]{0,4}:){1,6}[0-9a-f]{1,4}$/", $ip); $v4 = preg_match("/^([0-9]{1,3}.){3}[0-9]{1,3}$/", $ip); if ( $v6 != 0 ) $type = "IPv6"; elseif ( $v4 != 0 ) $type = "IPv4"; else $type = "unknown"; echo json_encode(array("ip" => $ip, "type" => $type)); ?>
Вмысле показывает обычный IP? то есть IPv4? Если показывает адрес обычный IPv4, то значит подключение в вэб-серверу произошло по интерфейсу IPv4. Нужно смотреть настройки вэб-сервера, интерфейс IPv6 должен быть настроен. Потом подключение лучше делать по IP-адресу (версии 6).
нет, не определяет ip если подключиться через ipv6 может сервер хостера не настроен ? $_SERVER['REMOTE_ADDR'] должен отображать ipv6 если на страницу зайти с 6 версии ip ?
Синтакс еррор ин регекс. PHP: $v6 = preg_match("/^[0-9a-f]{1,4}:([0-9a-f]{0,4}:){1,6}[0-9a-f]{1,4}$/", $ip); не увидит скрипт ipv6. в начале нужно найти '[', пропущенный в строке поиска.