Я настраиваю сервер для работы с двумя стеками, включая 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 с сервера?
Каждый входящий запрос использует либо IPv4, либо IPv6, но не оба одновременно. Если вы хотите знать оба, вам нужно будет запустить несколько соединений с вашим сервером, используя разные протоколы.
Самый распространенный способ сделать это — создать два дополнительных имени хоста: одно только с IPv4-адресом вашего сервера, а другое только с IPv6-адресом вашего сервера. Затем для ответа (в предположении HTML) вы генерируете уникальный код и добавляете на страницу два скрытых изображения. Один использует имя хоста только для IPv4, а другой — имя хоста только для IPv6. Оба содержат уникальный код, который вы сгенерировали в URL, чтобы клиент не кэшировал изображение, и вы можете видеть, какие запросы изображения принадлежат друг другу.
Это довольно хлопотно, и для большинства целей не стоит усилий.
Других решений пока нет …