Ho un semplice script che determina l'indirizzo IP dell'utente:
function GetIp(){
if (!empty($_SERVER['HTTP_CLIENT_IP']))
//check ip from share internet
{
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
//to check ip is pass from proxy
{
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip=$_SERVER['REMOTE_ADDR'];
}
return $ip;
}
Ora in Rete da qualche parte ho visto una persona che utilizza questo script:
if (isset($_SERVER['HTTP_CLIENT_IP']) && $_SERVER['HTTP_CLIENT_IP'] != '')
$Ip = $_SERVER['HTTP_CLIENT_IP'];
elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] != '')
$Ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
elseif (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] != '')
$Ip = $_SERVER['REMOTE_ADDR'];
Mi chiedevo se la mia applicazione è rotto .. Devo controllare se il valore di $_SERVER['HTTP_CLIENT_IP']
, $_SERVER['HTTP_X_FORWARDED_FOR']
o $_SERVER['REMOTE_ADDR']
è vuoto? O in realtà non è necessario farlo?
Qual è lo scopo di questo? È in qualche modo rilevante per la sicurezza? Perché se lo è, "REMOTE_ADDR" è l'unico che valga la pena. –
Depends. Ricordo che alcune società di hosting sono là fuori che hanno un proxy di fronte ai loro server e inseriscono i proxy * local * IP che portano a 'REMOTE_ADDR' sempre come qualcosa di' 10.0.0.1' ... Quindi se si voleva ottenere l'IP dei client che dovevi usare con 'X_FORWARDED_FOR' – klaustopher