Я загрузил csv geoip lite с http://www.maxmind.com/app/geolitecountry . Я импортировал эти данные в свой db как следующие таблицы:
Блоки: startIP, endIP, 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. db возвращает запрос, однако местоположение находится из Австралии, и этот ip определенно не находится в Австралии.
те, кто знаком с geoip, это что-то, что я делаю неправильно, поскольку формула идет?