internet habilitar conectividad como acceso php ipv6 ipv4

php - habilitar - Cómo comprobar si alguien se conectó a través de IPv6/IPv4



como habilitar la conectividad ipv6 (7)

¿Qué hay de contar el número de ''.'' y / o '' : '' en $_SERVER["REMOTE_ADDR"] ?

Si hay más de 0 '' : '', y no '' . ''símbolo en $_SERVER["REMOTE_ADDR"] , supongo que puede considerar que su usuario está conectado a través de IPv6.


Otra solución podría ser usar la extensión de filtro : hay constants (ver el final de la página) que parecen estar relacionadas con IPv4 e IPv6:

FILTER_FLAG_IPV4 (entero)
Permitir solo la dirección IPv4 en el filtro "validate_ip".

FILTER_FLAG_IPV6 (entero)
Permita solo la dirección IPv6 en el filtro "validate_ip".

Quiero verificar a través de php si alguien se conecta a mi sitio a través de IPv4 o IPv6.

La dirección del cliente se puede encontrar en $_SERVER["REMOTE_ADDR"] pero, ¿cómo verificar si es IPv4 o IPv6?


Dado que la respuesta más votada tiene un problema bastante importante, voy a compartir la mía.

Esto devuelve verdadero si se pasa una dirección que parece ser IPv6, y falso si se pasa una dirección que parece ser IPv4 (o IPv4-mapped IPv6). Las direcciones reales no se validan más; use filter_var() si necesita validarlos.

function is_ipv6($address) { $ipv4_mapped_ipv6 = strpos($address, "::ffff:"); return (strpos($address, ":") !== FALSE) && ($ipv4_mapped_ipv6 === FALSE || $ipv4_mapped_ipv6 != 0); }


Las direcciones IPv4 coinciden todas con la expresión regular /^/d{1,3}(/./d{1,3}){3,3}$/ .


Puede usar AF_INET6 para detectar ipv6 en PHP:

<?php if ( defined(''AF_INET6'') ) { echo ''Yes''; } else { echo ''No''; } ?>


Puedes usar inet_pton :

<?php $packedIp = inet_pton($ip); if ($packedIp === false) { // invalid IP } else if (isset($packedIp[4])) { // IPv6 } else { // IPv4 }


Puedes usar esto:

function ipVersion($txt) { return strpos($txt, ":") === false ? 4 : 6; }


Verificar por IPv4

$ip = "255.255.255.255"; if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) { echo "Valid IPv4"; } else { echo "Invalid IPv4"; }

Compruebe si hay IPv6

$ip = "FE80:0000:0000:0000:0202:B3FF:FE1E:8329"; if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) { echo "Valid IPv6"; } else { echo "Invalid IPv6"; }

Para más información, verifique la función PHP filter_vars y la list of filters for validation .