A PHP implementation which may be adaptable to load ranges from a database is shown below:
<?php
$ranges = [
['64.233.160.0', '64.233.191.255'],
['66.102.0.0' , '66.102.15.255' ],
['66.249.64.0' , '66.249.95.255' ],
['72.14.192.0' , '72.14.255.255' ],
['74.125.0.0' , '74.125.255.255'],
['209.85.128.0', '209.85.255.255'],
['216.239.32.0', '216.239.63.255']
];
function in_range($ip, $ranges) {
$size = count($ranges);
$longIP = ip2long($ip);
for ($i = 0; $i < $size; $i++)
if ($longIP >= ip2long($ranges[$i][0]) && $longIP <= ip2long($ranges[$i][1]))
return true;
return false;
}
var_dump(in_range('64.233.160.168', $ranges));
var_dump(in_range('123.123.123.123', $ranges));
bool(true)
bool(false)