:master: :master:
mettiamo che dentro l'array $banned_ips ci stiano gli ip in formato LONG (quindi un numero e non i 4 byte in formato "leggibile")
codice:
$banned_ip = array();
$current_ip = ip2long($_SERVER['REMOTE_ADDR'])
while($banned_ip = each($banned_ips)) {
if $banned_ip['start'] => $current_ip && $banned_ip['end'] =< $current_ip {
echo "Il tuo ip appartiene a un range di ip bannato"; // oppure qualcosa di + "anonimo" come: Errore interno alla pagina
break;
}
}
il codice è +/- questo...l'array nn importa se lo prendi da file o da db (personalmente ti consiglio da db o da file...ma file che carichi tu non un file php che includi xche il tempo per eseguire questa operazione è MOLTO elevato...quasi 1 volta e mezzo + lento di estrarre lo stesso numero di righe dal db e 2 volte + lento di lanciare un ben file e un bell'explode per estrarre i dati da un file di testo per metterli in un'array)
come vedi è molto semplice come codice è effettivamente ti blocca gli ip. Con semplicità, se vuoi fare le WHITE LIST, quindi possono accedere solo range di ip in quella lista, basta modificare l'if 
Ad es se vuoi aggiungere una motivazione specifica ti basta aggiungere una colonna all'array chiamata magari REASON e fai dentro l'if che controlla l'ip
codice:
if (isset($banned_ip['reason']) && $banned_ip['reason'] != '') {
echo $banned_ip['reason'];
} else {
... come su ...
}
ciauz