servidor obtener nombre http_client_ip equipo con cliente capturar php ip-address

obtener - Obtenga la dirección IP del cliente usando PHP



obtener nombre de equipo cliente php (5)

Esta pregunta ya tiene una respuesta aquí:

Quiero obtener la dirección IP del cliente que usa mi sitio web. Estoy usando el superglobal PHP $_SERVER :

$_SERVER[''REMOTE_ADDR''];

Pero veo que no puede dar la dirección IP correcta usando esto. Obtengo mi dirección IP y veo que es diferente de mi dirección IP y también puedo ver mi dirección IP en algún sitio web como:

http://whatismyipaddress.com/

Pego la dirección IP que da mi función de PHP, pero este sitio web no muestra ningún resultado al respecto. ¿Cómo surge este problema y cómo puedo obtener la dirección IP del cliente?


Aquí hay una función para obtener la dirección IP usando un filtro para direcciones IP locales y LAN:

function get_IP_address() { foreach (array(''HTTP_CLIENT_IP'', ''HTTP_X_FORWARDED_FOR'', ''HTTP_X_FORWARDED'', ''HTTP_X_CLUSTER_CLIENT_IP'', ''HTTP_FORWARDED_FOR'', ''HTTP_FORWARDED'', ''REMOTE_ADDR'') as $key){ if (array_key_exists($key, $_SERVER) === true){ foreach (explode('','', $_SERVER[$key]) as $IPaddress){ $IPaddress = trim($IPaddress); // Just to be safe if (filter_var($IPaddress, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) !== false) { return $IPaddress; } } } } }

q


En PHP 5.3 o superior, puedes obtenerlo así:

$ip = getenv(''HTTP_CLIENT_IP'')?: getenv(''HTTP_X_FORWARDED_FOR'')?: getenv(''HTTP_X_FORWARDED'')?: getenv(''HTTP_FORWARDED_FOR'')?: getenv(''HTTP_FORWARDED'')?: getenv(''REMOTE_ADDR'');


La forma más sencilla de obtener la dirección IP del visitante / cliente es usar las variables $_SERVER[''REMOTE_ADDR''] o $_SERVER[''REMOTE_HOST''] .

Sin embargo, a veces esto no devuelve la dirección IP correcta del visitante, por lo que podemos utilizar algunas otras variables del servidor para obtener la dirección IP.

Las siguientes funciones son equivalentes con la diferencia solo en cómo y desde dónde se recuperan los valores.

getenv () se usa para obtener el valor de una variable de entorno en PHP.

// Function to get the client IP address function get_client_ip() { $ipaddress = ''''; if (getenv(''HTTP_CLIENT_IP'')) $ipaddress = getenv(''HTTP_CLIENT_IP''); else if(getenv(''HTTP_X_FORWARDED_FOR'')) $ipaddress = getenv(''HTTP_X_FORWARDED_FOR''); else if(getenv(''HTTP_X_FORWARDED'')) $ipaddress = getenv(''HTTP_X_FORWARDED''); else if(getenv(''HTTP_FORWARDED_FOR'')) $ipaddress = getenv(''HTTP_FORWARDED_FOR''); else if(getenv(''HTTP_FORWARDED'')) $ipaddress = getenv(''HTTP_FORWARDED''); else if(getenv(''REMOTE_ADDR'')) $ipaddress = getenv(''REMOTE_ADDR''); else $ipaddress = ''UNKNOWN''; return $ipaddress; }

$ _SERVER es una matriz que contiene variables de servidor creadas por el servidor web.

// Function to get the client IP address function get_client_ip() { $ipaddress = ''''; if (isset($_SERVER[''HTTP_CLIENT_IP''])) $ipaddress = $_SERVER[''HTTP_CLIENT_IP'']; else if(isset($_SERVER[''HTTP_X_FORWARDED_FOR''])) $ipaddress = $_SERVER[''HTTP_X_FORWARDED_FOR'']; else if(isset($_SERVER[''HTTP_X_FORWARDED''])) $ipaddress = $_SERVER[''HTTP_X_FORWARDED'']; else if(isset($_SERVER[''HTTP_FORWARDED_FOR''])) $ipaddress = $_SERVER[''HTTP_FORWARDED_FOR'']; else if(isset($_SERVER[''HTTP_FORWARDED''])) $ipaddress = $_SERVER[''HTTP_FORWARDED'']; else if(isset($_SERVER[''REMOTE_ADDR''])) $ipaddress = $_SERVER[''REMOTE_ADDR'']; else $ipaddress = ''UNKNOWN''; return $ipaddress; }


También funciona bien para direcciones IP internas:

function get_client_ip() { $ipaddress = ''''; if (getenv(''HTTP_CLIENT_IP'')) $ipaddress = getenv(''HTTP_CLIENT_IP''); else if(getenv(''HTTP_X_FORWARDED_FOR'')) $ipaddress = getenv(''HTTP_X_FORWARDED_FOR''); else if(getenv(''HTTP_X_FORWARDED'')) $ipaddress = getenv(''HTTP_X_FORWARDED''); else if(getenv(''HTTP_FORWARDED_FOR'')) $ipaddress = getenv(''HTTP_FORWARDED_FOR''); else if(getenv(''HTTP_FORWARDED'')) $ipaddress = getenv(''HTTP_FORWARDED''); else if(getenv(''REMOTE_ADDR'')) $ipaddress = getenv(''REMOTE_ADDR''); else $ipaddress = ''UNKNOWN''; return $ipaddress; }


$ipaddress = ''''; if ($_SERVER[''HTTP_CLIENT_IP''] != ''127.0.0.1'') $ipaddress = $_SERVER[''HTTP_CLIENT_IP'']; else if ($_SERVER[''HTTP_X_FORWARDED_FOR''] != ''127.0.0.1'') $ipaddress = $_SERVER[''HTTP_X_FORWARDED_FOR'']; else if ($_SERVER[''HTTP_X_FORWARDED''] != ''127.0.0.1'') $ipaddress = $_SERVER[''HTTP_X_FORWARDED'']; else if ($_SERVER[''HTTP_FORWARDED_FOR''] != ''127.0.0.1'') $ipaddress = $_SERVER[''HTTP_FORWARDED_FOR'']; else if ($_SERVER[''HTTP_FORWARDED''] != ''127.0.0.1'') $ipaddress = $_SERVER[''HTTP_FORWARDED'']; else if ($_SERVER[''REMOTE_ADDR''] != ''127.0.0.1'') $ipaddress = $_SERVER[''REMOTE_ADDR'']; else $ipaddress = ''UNKNOWN'';