Questa è la mia funzione.
vantaggi:
- lavoro se $ _SERVER non era disponibile.
- Filtro IP privato e/o riservato;
- processo tutti gli IP inoltrati in X_FORWARDED_FOR
- compatibile con CloudFlare
- possibile impostare un default se non ha trovato valida IP!
- Breve & Semplice!
/**
* Get real user ip
*
* Usage sample:
* GetRealUserIp();
* GetRealUserIp('ERROR',FILTER_FLAG_NO_RES_RANGE);
*
* @param string $default default return value if no valid ip found
* @param int $filter_options filter options. default is FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE
*
* @return string real user ip
*/
function GetRealUserIp($default = NULL, $filter_options = 12582912) {
$HTTP_X_FORWARDED_FOR = isset($_SERVER)? $_SERVER["HTTP_X_FORWARDED_FOR"]:getenv('HTTP_X_FORWARDED_FOR');
$HTTP_CLIENT_IP = isset($_SERVER)?$_SERVER["HTTP_CLIENT_IP"]:getenv('HTTP_CLIENT_IP');
$HTTP_CF_CONNECTING_IP = isset($_SERVER)?$_SERVER["HTTP_CF_CONNECTING_IP"]:getenv('HTTP_CF_CONNECTING_IP');
$REMOTE_ADDR = isset($_SERVER)?$_SERVER["REMOTE_ADDR"]:getenv('REMOTE_ADDR');
$all_ips = explode(",", "$HTTP_X_FORWARDED_FOR,$HTTP_CLIENT_IP,$HTTP_CF_CONNECTING_IP,$REMOTE_ADDR");
foreach ($all_ips as $ip) {
if ($ip = filter_var($ip, FILTER_VALIDATE_IP, $filter_options))
break;
}
return $ip?$ip:$default;
}
fonte
2017-05-02 12:47:33
È possibile ottenere l'ip reale da un proxy solo se tale proxy non è completamente anonimo altrimenti si otterrà solo il proxy ip – Prix
È possibile visualizzare questo collegamento http://allinonescript.blogspot.in/2016/09/how -to-get-real-ip-isp-country-city-and-etc-from-visitor-using-php.html –