October 26 2007

Capturar la IP real del usuario en PHP

En muchas de nuestras aplicaciones, nos veremos obligados o necesitados de capturar la ip de nuestros usuario, por ejemplo, para fines estadísticos, para alimentar la paranoia de nuestro jefe y / o cliente, etc. Así que la forma de capturar la ip sería:

PHP:
  1. $ip = $_SERVER["REMOTE_ADDR"];

Pero, por supuesto, este dato puede verse falseado por el uso de proxies y trucos similares para enmascarar la ip, así que hagamos una función php que nos devuelva la ip real del usuario

PHP:
  1. function ipreal()
  2. {
  3.     if ($_SERVER)
  4.     {
  5.         if ($_SERVER[HTTP_X_FORWARDED_FOR])
  6.             $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
  7.         else
  8.             if ( $_SERVER["HTTP_CLIENT_IP"] )
  9.                 $ip = $_SERVER["HTTP_CLIENT_IP"];
  10.             else
  11.                 $ip = $_SERVER["REMOTE_ADDR"];
  12.     }
  13.     else
  14.     {
  15.         if ( getenv( "HTTP_X_FORWARDED_FOR" ) )
  16.             $ip = getenv( "HTTP_X_FORWARDED_FOR" );
  17.         else
  18.             if ( getenv( "HTTP_CLIENT_IP" ) )
  19.                 $ip = getenv( "HTTP_CLIENT_IP" );
  20.             else
  21.                 $ip = getenv( "REMOTE_ADDR" );
  22.     }
  23.     return $ip;
  24. }

Que se utilizaría así

PHP:
  1. echo ipreal();

O así

PHP:
  1. $ip = ipreal();

RSS