saber privada para obtener funcion con como alguien php ip-address

para - obtener ip privada con php



PHP cómo obtener IP local del sistema (14)

De CLI

PHP <5.3.0

$localIP = getHostByName(php_uname(''n''));

PHP> = 5.3.0

$localIP = getHostByName(getHostName());

Necesito obtener IP local de la computadora como 192. * .... ¿Es esto posible con PHP?

Necesito la dirección IP del sistema que ejecuta el script, pero no necesito el IP externo, necesito su dirección de tarjeta de red local.


Depende de lo que quieres decir con local:

Si por local te refieres a la dirección del servidor / sistema que ejecuta el código PHP, entonces todavía hay dos avenidas para discutir. Si PHP se está ejecutando a través de un servidor web, puede obtener la dirección del servidor leyendo $_SERVER[''SERVER_ADDR''] . Si PHP se está ejecutando a través de una interfaz de línea de comando, entonces es probable que tenga que ejecutar shell- ipconfig (Windows) / ifconfig (* nix) y grep la dirección.

Si por local quiere decir la dirección remota del visitante del sitio web, pero no su dirección IP externa (ya que específicamente dijo 192. *), entonces no tiene suerte. El objetivo del enrutamiento NAT es ocultar esa dirección. No puede identificar las direcciones locales de las computadoras individuales detrás de una dirección IP, pero hay algunos trucos (agente de usuario, posiblemente dirección MAC) que pueden ayudar a diferenciar si hay varias computadoras que acceden desde la misma IP.


Esta es una publicación antigua, pero obténgala con esto:

function getLocalIp() { return gethostbyname(trim(`hostname`)); }

Por ejemplo:

die( getLocalIp() );

Lo encontró en otro sitio, no elimine el comando de recorte, ya que de lo contrario obtendrá el nombre de la computadora.

BACKTICKS (Las comillas especiales): Funciona porque PHP intentará ejecutar lo que sea entre esas "comillas especiales" (patillas) como un comando de shell y devuelve el resultado resultante.

gethostbyname(trim(`hostname`));

Es muy similar (pero mucho más eficiente) que hacer:

$exec = exec("hostname"); //the "hostname" is a valid command in both windows and linux $hostname = trim($exec); //remove any spaces before and after $ip = gethostbyname($hostname); //resolves the hostname using local hosts resolver or DNS


Jugué con esta pregunta para un php del lado del servidor (ejecutándose desde el terminal de Linux)

Exploté ''ifconfig'' y lo reduje a la dirección IP.

Aquí está:

$interface_to_detect = ''wlan0''; echo explode('' '',explode('':'',explode(''inet addr'',explode($interface_to_detect,trim(`ifconfig`))[1])[1])[1])[0];

Y, por supuesto, cambie ''wlan0'' a su dispositivo de red deseado.

Mi salida es:

192.168.1.5


La dirección IP externa predeterminada de la máquina local se puede obtener de esta manera:

$sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); socket_connect($sock, "8.8.8.8", 53); socket_getsockname($sock, $name); // $name passed by reference $localAddr = $name;

Cómo funciona:

Como esto es UDP, socket_connect no se apaga en la red. Solo asigna una dirección local y un puerto al socket. Esto nos permite obtener la dirección local.

Esta solución funciona sin tráfico de red, DNS o ejecución de comandos.

Puede no funcionar si no hay una ruta hacia 8.8.8.8 (por ejemplo, no tiene conexión a Internet).


Prueba esto -

$ip = $_SERVER[''HTTP_CLIENT_IP'']?$_SERVER[''HTTP_CLIENT_IP'']:($_SERVER[''HTTP_X_FORWARDE‌​D_FOR'']?$_SERVER[''HTTP_X_FORWARDED_FOR'']:$_SERVER[''REMOTE_ADDR'']);


Prueba esto

$localIP = gethostbyname(trim(''hostname''));


Puede probar esto como usuario habitual en CLI en el host de Linux:

function get_local_ipv4() { $out = split(PHP_EOL,shell_exec("/sbin/ifconfig")); $local_addrs = array(); $ifname = ''unknown''; foreach($out as $str) { $matches = array(); if(preg_match(''/^([a-z0-9]+)(:/d{1,2})?(/s)+Link/'',$str,$matches)) { $ifname = $matches[1]; if(strlen($matches[2])>0) { $ifname .= $matches[2]; } } elseif(preg_match(''/inet addr:((?:25[0-5]|2[0-4]/d|1/d/d|[1-9]/d|/d)(?:[.](?:25[0-5]|2[0-4]/d|1/d/d|[1-9]/d|/d)){3})/s/'',$str,$matches)) { $local_addrs[$ifname] = $matches[1]; } } return $local_addrs; } $addrs = get_local_ipv4(); var_export($addrs);

Salida:

array ( ''eth0'' => ''192.168.1.1'', ''eth0:0'' => ''192.168.2.1'', ''lo'' => ''127.0.0.1'', ''vboxnet0'' => ''192.168.56.1'', )


Si se encuentra en un entorno de desarrollo en OS X, conectado a través de WiFi:

echo exec("/sbin/ifconfig en1 | grep ''inet '' | cut -d '' '' -f2");


intente esto (si su servidor es Linux):

$command="/sbin/ifconfig eth0 | grep ''inet addr:'' | cut -d: -f2 | awk ''{ print $1}''"; $localIP = exec ($command); echo $localIP;


nombre de host (1) puede decirle a la dirección IP: hostname --ip-address , o como dice el hombre, es mejor usar el hostname --all-ip-addresses


$_SERVER[''REMOTE_ADDR'']

  • PHP_SELF Devuelve el nombre de archivo del script actual con la ruta relativa a la raíz

  • SERVER_PROTOCOL Devuelve el nombre y la revisión del protocolo solicitado por la página

  • REQUEST_METHOD Devuelve el método de solicitud utilizado para acceder a la página

  • DOCUMENT_ROOT Devuelve el directorio raíz bajo el cual se está ejecutando el script actual


$_SERVER[''SERVER_ADDR'']


$localIP = gethostbyname(trim(exec("hostname")));

Lo intenté en Windows pc y funcionó y también creo que funcionará en Linux para.