сеть — функция PHP, чтобы показать как ipv4 ipv6

Я настраиваю сервер для работы с двумя стеками, включая ipv4 и ipv6. Затем я хочу создать страницу php, чтобы показать, подключается ли клиентский компьютер через ipv4, ipv6 или оба.

Я также пробовал $ _SERVER [‘REMOTE_ADDR’] и getenvbyhost («REMOTE_ADDR»), но он возвращает только одно или другое, но не оба одновременно.

Я также попробовал приведенный ниже код

 function isIPv6($ip) {

if(filter_var($ip, FILTER_VALIDATE_IP)) {

if(filter_var($ip, FILTER_FLAG_IPV6)) {
//It is IPv6 indeed.
} else {
//It is IPv4
}

} else {
// Not a valid IP
}
}

Можно ли получить оба ips с сервера?

2

Решение

Каждый входящий запрос использует либо IPv4, либо IPv6, но не оба одновременно. Если вы хотите знать оба, вам нужно будет запустить несколько соединений с вашим сервером, используя разные протоколы.

Самый распространенный способ сделать это — создать два дополнительных имени хоста: одно только с IPv4-адресом вашего сервера, а другое только с IPv6-адресом вашего сервера. Затем для ответа (в предположении HTML) вы генерируете уникальный код и добавляете на страницу два скрытых изображения. Один использует имя хоста только для IPv4, а другой — имя хоста только для IPv6. Оба содержат уникальный код, который вы сгенерировали в URL, чтобы клиент не кэшировал изображение, и вы можете видеть, какие запросы изображения принадлежат друг другу.

Это довольно хлопотно, и для большинства целей не стоит усилий.

5

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

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

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