Quelques options sur les tables - vous pouvez stocker l'adresse IP en tant que chaîne lisible par un humain (4 octets en pointillés) ou dans son long numéro natif utilisé par cidr_match. En supposant que nous avons pris avec lisible par l'homme (à réutiliser cidr_match
de la page liée)
function testIP($ip=$_SERVER['REMOTE_ADDR']) {
//Returns TRUE - valid, FALSE - denied
/* Get the data from the database and return it in rows
* this could be real-time retrieved, or pulled into an array
* first
* assumes: deny_ranges(ip VARCHAR(45) not null,mask INT not null default 0)
* eg: $denyips= get "SELECT ip,mask FROM deny_ranges" from database
*/
foreach($denyips as $row) {
if ($row["mask"]==0) {
//No need to use overhead of CIDR_MATCH
//Exact match - reject
if ($row["ip"]==$ip) return false;
} elseif (cidr_match($ip,$row["ip"]."/".$row["mask"])==true) {
//In denied range - reject
return false;
}
}
//Got through all rejected ranges+ips - it's good
return true;
}
(Vous pouvez trouver cird_match
sur l'autre poste)
Seams comme vous le savez très bien ce que vous voulez et essayez de avoir fait tes devoirs ... Je ne vois vraiment pas de question là-bas. – Frankie
@ShaunO: Alors, quelle est votre question? Quelle partie avez-vous des difficultés avec? S'il vous plaît modifier la question pour nous le faire savoir. –
-1 pour "Faire mon travail/devoirs pour moi, kthxbai" – Stephen