Tablolar üzerine birkaç seçenekleri - okunabilir bir dizeye (4 noktalı bayt) olarak ya da o IP'yi saklayabilirsiniz kullanır cidr_match yerli uzun numara var. Biz (bağlantılı sayfasından cidr_match
yeniden) insan okunabilir ile sıkışmış ettik varsayarsak
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;
}
(Siz diğer yazı üzerine cird_match
bulabilirsiniz)