Geo IP конвертер
Добрый день! Хоть я и очень запарился, делая PinkContext и времени у меня уже нет, я все же собрался с мыслями, сел и написал этот пост.
Как я и обещал, сегодня я пишу о том, как сконвертировать GeoIP базу от MaxMind и как ей потом пользоваться. Итак, сразу к делу, вот листинг конвертера:
require_once("config.php");
$file = fopen("GeoIPCountryWhois.csv", "r");
flock($file, 1);
$i = 0;
while (!feof($file))
{
$mass = fgetcsv($file, 1024);
$begin[$i] = $mass[2];
$end[$i] = $mass[3];
$code[$i] = $mass[4];
$i++;
}
$geoquery = mysql_query("SELECT * FROM `geoip`");
$c = mysql_num_rows($geoquery);
for ($i = $c; > count($begin); $i++)
{
mysql_query("INSERT INTO `geoip` VALUES ('".$begin[$i]."', '".$end[$i]."', '".$code[$i]."')");
}
flock($file, 3);
fclose($file);
if ($i == count($begin)) echo "Завершено";
А теперь опишу как же все это работает. Во-первых, подключаемся к базе данных, используя общий файл настроек — config.php. Затем открываем файл базы и пока не дойдем до конца считываем его циклом в массив. После этого смотрим, сколько уже записей в базе (на случай, если с первого раза база не сконвертировалась полностью из-за ограничений на время исполнения) и начиная с места последней записи вставляем новые значения.
В итоге, когда скрипт полностью завершит свою работу, он выведет «Завершено».
Как же использовать эту базу? Для определения страны с ее помощью я сделал небольшую функцию:
function geoip($ip)
{
$params = explode(".", $ip);
$adr = 16777216*$params[0] + 65536*$params[1] + 256*$params[2] + $params[3];
$query = mysql_query("SELECT * FROM `geoip` WHERE '".$adr."' BETWEEN `begin` AND `end` LIMIT 1");
if (mysql_num_rows($query)) $code = mysql_result($query, 0, "code"); else $code = "";
return $code;
}
Как видно, ей передается IP адрес и на выходе она возвращает код страны (если ничего не найдено результат — пустая строка). Вот и все, база готова использованию…
Подошел к концу десятый пост моего блога. Желаю вам и себе удачи во всех начинаниях!
P.S. После пятидесятой записи всех ждет полезный сюрприз
Сколько стоила разработка PinkContext?
Разработка еще не до конца завершена, однако полная стоимость равна 500$
Круто!