Я скачал CSV Geoip Lite с http://www.maxmind.com/app/geolitecountry.
Я импортировал эти данные в свою базу данных в виде следующих таблиц:
Блоки:
startIP,
endIP,
locid.
Место нахождения:
locid,
страна,
область, край,
Город,
Почтовый индекс,
лат,
долго,
встретились,
AREACODE.
код, который создает IPnum:
<? $ip =$_SERVER['REMOTE_ADDR'];
list($w, $x, $y, $z) = explode('.', $ip);
$one = 16777216* $w;
$two = 65536* $x ;
$three = 256*$y;
$ipnum = $one + $two+ $three + $z;
?>
тогда мой запрос:
SELECT postalcode FROM location WHERE locid =(SELECT locid FROM blocks WHERE startIP <= '$ipnum' AND endIP>= '$ipnum' LIMIT 1)
для IP 69.63.184.142, ipnum равен 1161803918.
БД возвращает запрос, однако, это место из Австралии, и этот ip определенно не в Австралии.
те, кто знаком с geoip, я что-то не так делаю с формулой?