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.
-
function isIPIn($ip,$net,$mask) {
-
}
-
-
function isPrivateIP($ip) {
-
foreach ( $privates as $k ) {
-
if (isIPIn($ip,$net,$mask)) {
-
return true;
-
}
-
}
-
return false;
-
}
-
-
function check_ip_behind_proxy() {
-
$user_ip = $_SERVER["REMOTE_ADDR"];
-
$user_ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
-
$user_ip = $_SERVER["HTTP_CLIENT_IP"];
-
} else {
-
return $user_ip;
-
}
-
foreach ($ips as $ip) {
-
&& !isPrivateIP($ip) ) {
-
$user_ip = $ip;
-
}
-
}
-
return $user_ip;
-
}
-
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.
-
<?php
-
/*
-
Plugin Name: Check IP Behind Proxy
-
Plugin URI: http://mnm.uib.es/gallir/posts/2005/02/21/145/
-
Description: Check for client public IP sent by proxies in HTTP headers
-
Author: Ricardo Galli
-
Version: 1.1
-
Author URI: http://mnm.uib.es/gallir/
-
License: GPL
-
*/
-
-
function isIPIn($ip,$net,$mask) {
-
}
-
-
-
function isPrivateIP($ip) {
-
foreach ( $privates as $k ) {
-
if (isIPIn($ip,$net,$mask)) {
-
return true;
-
}
-
}
-
return false;
-
}
-
-
function check_ip_behind_proxy($user_ip) {
-
//$user_ip = $_SERVER["REMOTE_ADDR"];
-
$user_ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
-
$user_ip = $_SERVER["HTTP_CLIENT_IP"];
-
} else {
-
return $user_ip;
-
}
-
foreach ($ips as $ip) {
-
&& !isPrivateIP($ip) ) {
-
$user_ip = $ip;
-
}
-
}
-
return $user_ip;
-
}
-
-
-
add_filter('pre_comment_user_ip','check_ip_behind_proxy');
-
-
?>

