2012-05-09 17 views
24

Estoy tratando de obtener la dirección IP de mi máquina a través de php. Para eso estoy escribiendo el código como:Dirección IP de la máquina en PHP da :: 1 pero ¿por qué?

<?php echo "<br />".$_SERVER['REMOTE_ADDR'];?> 

Pero este pedazo de código no está funcionando. Está devolviendo "::1". Por favor, ayúdame a obtener la dirección IP real.

+0

'$ _SERVER [ 'REMOTE_ADDR']' no es la dirección IP del tu máquina – hakre

+0

Posibles duplicados: [Identificar la dirección IP del servidor con PHP] (http://stackoverflow.com/questions/5800927/identify-server-ip-address-with-php) - o si necesita la otra cosa - [Cómo Cómo puedo encontrar la dirección IP de un usuario con PHP?] (http://stackoverflow.com/questions/55768/how-do-i-find-a-users-ip-address-with-php) – hakre

+0

¿De qué máquina? ¿Su servidor en el que se ejecuta PHP? ¿Su computadora de escritorio que está ejecutando el navegador que conecta con el servidor? – Quentin

Respuesta

39

::1 es la IP real. Es una dirección de bucle invertido ipv6 (es decir, localhost). Si estuviera usando ipv4, sería 127.0.0.1.

Si desea obtener una dirección IP diferente, deberá conectarse al servidor a través de una interfaz de red diferente.

+0

ok muchas gracias. Esto es nuevo para mí Gracias una vez más. – John

-2

mirada a la salida de phpinfo(). Si la dirección no está en esa página, entonces la dirección no está disponible directamente a través de PHP.

+0

'$ http_client_ip = $ _SERVER [' HTTP_CLIENT_IP ']; $ http_x_forwarded_for = $ _ SERVER ['HTTP_X_FORWARDED_FOR']; $ remote_addr = $ _ SERVER ['REMOTE_ADDR']; if (!vacío ($ http_client_ip)) {$ direccion_ip = $ http_client_ip;} else if (! empty ($ HTTP_X_FORWARDED_FOR)) {$ direccion_ip = $ HTTP_X_FORWARDED_FOR;} demás {$ direccion_ip = $ remote_addr;} echo $ direccion_ip ; ' –

+1

¿Por qué la baja repentina? Esta respuesta muestra que la información ** está ** o ** no ** disponible para PHP. – dotancohen

5

Si se refiere a obtener la dirección IP del usuario, se puede hacer algo como:

<?php 
    if(!empty($_SERVER['HTTP_CLIENT_IP'])){ 
     $ip=$_SERVER['HTTP_CLIENT_IP']; 
    } 
    elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){ 
     $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; 
    } 
    else{ 
     $ip=$_SERVER['REMOTE_ADDR']; 
    } 
?> 

<?php echo "<br />".$ip;?> 

Se obtendrá la dirección IP real del usuario, independientemente de proxies etc.

+0

No es una respuesta a la pregunta que se hizo, pero es útil. – Leri

+0

Supuse que eso era lo que el OP realmente quería decir, pero podría estar equivocado –

+0

Creo que él/ella tenía curiosidad por qué '$ _SERVER ['REMOTE_ADDR']' devuelve ':: 1'. Tal vez yo estoy equivocado. Lo que sea +1 de mi parte – Leri

5

Si está intentando ejecutar localhost, esta respuesta solucionará su problema. A pocos cambios en

apache2/httpd.conf 

búsqueda todos "escuchan" las palabras ejemplo:

Listen 80 

hecho así.

Listen 127.0.0.1:80 

que reinicie el Apache

$_SERVER[REMOTE_ADDR] 

mostrará Listen 127.0.0.1

se puede ver respuesta en este detailed answer link

Cuestiones relacionadas