Obtener la dirección IP del usuario en PHP

Subodh Poudel 30 enero 2023
PHP
  1. Utilice $_SERVER['REMOTE_ADDR'] para encontrar la dirección IP del usuario en PHP
  2. Utilice $_SERVER['REMOTE_ADDR'], $_SERVER['HTTP_CLIENT_IP'] y $_SERVER['HTTP_X_FORWARDED_FOR'] para encontrar la dirección IP del usuario
  3. Utilice el operador ternario y la función isset() para encontrar la dirección IP del usuario
Obtener la dirección IP del usuario en PHP

Introduciremos una forma de acceder a la dirección IP del usuario desde un servidor en PHP utilizando la variable super global $_SERVER con REMOTE_ADDR como único elemento del array. Se utiliza como $_SERVER['REMOTE_ADDR'].

Demostraremos otra forma de acceder a la dirección IP del usuario en PHP usando la expresión condicional para verificar si las direcciones IP del usuario provienen de Internet compartida, de un proxy o es la dirección IP real. Este método utiliza elementos de array como HTTP_CLIENT_IP, HTTP_X_FORWARDED_FOR y REMOTE_ADDR.

Le mostraremos un método abreviado para obtener la dirección IP del usuario en PHP utilizando el operador ternario y la función isset(). Este método también utiliza los elementos del array como HTTP_CLIENT_IP, HTTP_X_FORWARDED_FOR y REMOTE_ADDR en la variable super global $_SERVER.

Utilice $_SERVER['REMOTE_ADDR'] para encontrar la dirección IP del usuario en PHP

Podemos usar la expresión $_SERVER['REMOTE_ADDR'] para encontrar la dirección IP desde donde el usuario está accediendo a la página actual. $_SERVER es la variable súper global en PHP, y toma una variedad de elementos de array como argumentos. Usamos REMOTE_ADDR como el elemento de array en la variable $_SERVER para acceder a la dirección IP real del cliente. Tenga en cuenta que $_SERVER['REMOTE_ADDR'] no siempre proporciona la dirección IP correcta del cliente en todos los casos. Discutiremos los otros casos a continuación. Asegúrese de que su API de servidor (SAPI) esté bien configurada para que la expresión anterior devuelva la IP real de la conexión.

En el siguiente ejemplo, el localhost se utiliza como servidor. Por lo tanto, devuelve la dirección IP de bucle invertido. Para obtener más información sobre la dirección de bucle invertido, consulte aquí. Suponga que la URL del siguiente script PHP es http://localhost/index.php. Emite la dirección IP de la máquina local como ::1. ::1 es la representación IPv6 del localhost.

Por ejemplo, asigne $_SERVER['REMOTE_ADDR'] a una variable ip_addr. Luego, imprima la variable usando el echo.

Código de ejemplo:

# php 7.x
<?php
$ip_add = $_SERVER['REMOTE_ADDR'];
echo "The user's IP address is - ".$ip_add;
?>

Producción :

The user's IP address is - ::1

Utilice $_SERVER['REMOTE_ADDR'], $_SERVER['HTTP_CLIENT_IP'] y $_SERVER['HTTP_X_FORWARDED_FOR'] para encontrar la dirección IP del usuario

Podemos usar los elementos del array de la variable superglobal $_SERVER como $_SERVER['REMOTE_ADDR'], $_SERVER['HTTP_CLIENT_IP'] y $_SERVER['HTTP_X_FORWARDED_FOR'] para encontrar la dirección IP de el usuario en PHP. Utilice $_SERVER['REMOTE_ADDR'] para encontrar la dirección IP real del usuario. Utilice $_SERVER['HTTP_CLIENT_IP'] para encontrar la dirección IP cuando el usuario accede a la página desde Internet compartido. Utilice $_SERVER['HTTP_X_FORWARDED_FOR'] para encontrar la dirección IP cuando el usuario utiliza un proxy para acceder a la página web. Tenga en cuenta que los encabezados como HTTP_X_FORWARDED_FOR y HTTP_CLIENT_IP pueden falsificarse, ya que cualquiera puede configurarlos. A veces, es posible que no representen la dirección IP real del cliente.

Por ejemplo, utilice la función empty() para comprobar si $_SERVER['HTTP_CLIENT_IP'] contiene algo. Si lo contiene, asigne el valor en la variable $ip e imprima i.
Nuevamente, realice una verificación en $_SERVER['HTTP_X_FORWARDED_FOR'] en consecuencia y asigne el valor e imprímalo si existe. Realice una operación similar en $_SERVER['REMOTE_ADDR'].

En el ejemplo de abajo, $_SERVER['REMOTE_ADDR'] devuelve la dirección IP ya que el usuario no está usando ningún proxy o conexión compartida a Internet. Revise el Manual de PHP para saber más sobre el array $_SERVER.

Código de ejemplo:

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

Producción :

 ::1

Utilice el operador ternario y la función isset() para encontrar la dirección IP del usuario

Podemos usar un método abreviado para encontrar la dirección IP del usuario en PHP usando el operador ternario. En este método, el método isset() comprueba si el array contiene los elementos especificados o los archivos de encabezado.

Por ejemplo, utilice la función isset() para comprobar si el array contiene HTTP_CLIENT_IP. Si la condición es verdadera, se establece HTTP_CLIENT_IP. Entonces, si la condición falla, la función isset() se usa para verificar si el array contiene HTTP_X_FORWARDED_FOR. De manera similar, si la condición es verdadera, se establece HTTP_X_FORWARDED_FOR y se establece REMOTE_ADDR cuando falla la condición.

En el siguiente ejemplo, el cliente no está utilizando un proxy ni una Internet compartida. Por lo tanto, se ejecuta $_SERVER['REMOTE_ADDR']. Por favor, revise los MSDN Web Docs para conocer el operador ternario.

Código de ejemplo:

#php 7.x
<?php
$ip = isset($_SERVER['HTTP_CLIENT_IP']) ? $_SERVER['HTTP_CLIENT_IP'] : isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'];
echo "The user IP Address is - ". $ip;
?>

Producción :

The user IP Address is - ::1
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn