Pues si, tienes toda la razón Tukzone .. No sólo que no coinciden las variables de servidor HTTP_REFERER y el SERVER_NAME, sinó que algunos proxys/firewalls ni te entregan el HTTP_REFERER ..
(así lo estoy sufriendo yo en mi scripcito "Autentificator" .. pues una parte de la validación la baso en ese dato .. sólo como "optimización" .. para náda es "crítico" e incluso me estoy planteando elminar dicha "comprobación" usando el HTTP_REFERER por la cantidad de problemas que trae ..)
Existe una variable de servidor con la cual podrías obtener la "IP" real .. Pero, depende del proxy/firewall .. podrás obtenera o no. Me refiero a:
HTTP_X_FORWARDED_FOR y HTTP_CLIENT_IP
Código PHP:
function getip() {
if (isset($_SERVER)) {
if ( $_SERVER[HTTP_X_FORWARDED_FOR] ) {
$realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
} elseif ( $_SERVER["HTTP_CLIENT_IP"] ) {
$realip = $_SERVER["HTTP_CLIENT_IP"];
} else {
$realip = $_SERVER["REMOTE_ADDR"];
}
} else {
if ( getenv( 'HTTP_X_FORWARDED_FOR' ) ) {
$realip = getenv( 'HTTP_X_FORWARDED_FOR' );
} elseif ( getenv( 'HTTP_CLIENT_IP' ) ) {
$realip = getenv( 'HTTP_CLIENT_IP' );
} else {
$realip = getenv( 'REMOTE_ADDR' );
}
}
return $realip;
}
// ejemplo
echo getip();
Todo esto sería "empaparse" el protocolo HTTP ..pero como que no estoy para esos trotes yo xDD..
Pruebalo y nos comentas ..
Un saludo,