Las siguientes funciones pertenecen al plugin Check IP Behind Proxy de Ricardo Galli y como está en su Antiguo y abandonado blog de Ricardo Galli
, mejor lo guardamos para tenerlo mas a la mano.
La idea es obtener con php la "IP real" del usuario que visita tu página.
PHP:
-
function isIPIn($ip,$net,$mask) {
-
-
-
-
$firstpart=
substr($binnet,
0,
$mask);
-
-
$firstip=
substr($binip,
0,
$mask);
-
return(strcmp($firstpart,
$firstip)==
0);
-
}
-
-
function isPrivateIP($ip) {
-
$privates =
array ("127.0.0.0/24",
"10.0.0.0/8",
"172.16.0.0/12",
"192.168.0.0/16");
-
foreach ( $privates as $k ) {
-
-
if (isIPIn($ip,$net,$mask)) {
-
return true;
-
}
-
}
-
return false;
-
}
-
-
function check_ip_behind_proxy() {
-
$user_ip = $_SERVER["REMOTE_ADDR"];
-
if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) {
-
$user_ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
-
} else if (isset($_SERVER["HTTP_CLIENT_IP"])) {
-
$user_ip = $_SERVER["HTTP_CLIENT_IP"];
-
} else {
-
return $user_ip;
-
}
-
-
foreach ($ips as $ip) {
-
-
&& !isPrivateIP($ip) ) {
-
$user_ip = $ip;
-
}
-
}
-
return $user_ip;
-
}
-
-
echo check_ip_behind_proxy
();
Como puedes ver hicimos un pequeñisimo cambio en check_ip_behind_proxy(): se descomenta y elimina la variable obligatoria $user_ip.
Clic aquí para bajar el plugin completo compactado ó en texto.
» Read more: Obtener la IP del navegante con PHP