-
Sistema ban ip
Salve a tutti, vi espongo subito il mio problema: ero in cerca di un sistema che potesse rilevarmi gli ip e girovagando su internet ho trovato questo:
Codice PHP:
<?php
class UserBan
{
public function get_ip_address() {
// check for shared internet/ISP IP
if (!empty($_SERVER['HTTP_CLIENT_IP']) && $this->validate_ip($_SERVER['HTTP_CLIENT_IP']))
return $_SERVER['HTTP_CLIENT_IP'];
// check for IPs passing through proxies
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
// check if multiple ips exist in var
$iplist = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
foreach ($iplist as $ip) {
if ($this->validate_ip($ip))
return $ip;
}
}
if (!empty($_SERVER['HTTP_X_FORWARDED']) && $this->validate_ip($_SERVER['HTTP_X_FORWARDED']))
return $_SERVER['HTTP_X_FORWARDED'];
if (!empty($_SERVER['HTTP_X_CLUSTER_CLIENT_IP']) && $this->validate_ip($_SERVER['HTTP_X_CLUSTER_CLIENT_IP']))
return $_SERVER['HTTP_X_CLUSTER_CLIENT_IP'];
if (!empty($_SERVER['HTTP_FORWARDED_FOR']) && $this->validate_ip($_SERVER['HTTP_FORWARDED_FOR']))
return $_SERVER['HTTP_FORWARDED_FOR'];
if (!empty($_SERVER['HTTP_FORWARDED']) && $this->validate_ip($_SERVER['HTTP_FORWARDED']))
return $_SERVER['HTTP_FORWARDED'];
// return unreliable ip since all else failed
return $_SERVER['REMOTE_ADDR'];
}
/**
* Ensures an ip address is both a valid IP and does not fall within
* a private network range.
*
* @access public
* @param string $ip
*/
public function validate_ip($ip) {
if (filter_var($ip, FILTER_VALIDATE_IP,
FILTER_FLAG_IPV4 |
FILTER_FLAG_IPV6 |
FILTER_FLAG_NO_PRIV_RANGE |
FILTER_FLAG_NO_RES_RANGE) === false)
return false;
self::$ip = $ip;
return true;
}
}
?>
qualcuno potrebbe spiegarmelo brevemente gentilmente? Leggendo i commenti della pagina da cui l'ho preso ho letto che è un metodo abbastanza sicuro per identificare gli ip nonostante vengano usati proxy etc ma non mi è molto chiaro come usarlo non conoscendo bene le funzioni che ci sono :???:
-
È molto semplice: questa è una classe php composta di due funzioni, di cui di fatto l'unica che ti interessa è la prima, ossia get_ip_address.
Questa funzione non fa altro che controllare tutti le variabili a disposizione che dovrebbero contenere l'indirizzo ip dell'utente, e, a partire da quella considerata più affidabile, verifica che rappresentino degli indirizzi reali grazie alla funzione validate_ip.
In pratica, per ottenere l'indirizzo ip dell'utente devi utilizzare un codice del genere:
Codice PHP:
$tmp = new UserBan();
$ip = $tmp->get_ip_address();
Dove in $ip hai l'indirizzo ip più sicuro che si possa ottenere con php.
Se mi permetti un consiglio, però, tutta questa sicurezza è, per un sito medio, decisamente eccessiva: se non hai particolari esigenze ti consiglio di utilizzare un semplicissimo
$ip = $_SERVER["REMOTE_ADDR"];
Spero di esserti stato utile! ;)
-
Grazie mille, sei stato gentilissimo! :wink:
-
scusate sono un utente nuovo sono salvino vorrei chiedervi dove inserire il codice scritto qui sopra del ban grazie mille