Где найти базу GeoIP и скрипт к ней, чтобы по IP адресу показал бы ближайший город, особая точность не нужна. База должна быть бесплатной, хочу сделать на ней визуальную трасировку.
Я лазил в гуголь) На этом сайте тока 25 определений в день бесплатно. Потом, для API нужно ставить модули к апатчу или php, а хостер этого не позволит. Страну определить не проблема, а вот город уже непросто Был не прав, нашёл 130 метровую бесплатную базу в CSV. Ща попробую использовать её... Мда, на хостинг её засунуть всю нельзя, а местные API требуют установки модуля...
МММ, файл в архиве 30 метров, распаковал, там 120 метров. А та картинка неправильно определила город)
GeoLiteCity 30 MB when uncompressed, last updated June 1st, 2011, next update July 1st, 2011) ПыСы: Лайт версия 79% точности, Фулл 83%.
Всё равно многовато, на хостинг мона грузить тока по 100 кб файлы в phpMyAdmin, замучаюсь, а скрипт писать неохота...
Гугл всё дает, если с ним дружить, но я не злой и помогу : Code: <?php include ("geoip.inc"); include ("geoipcity.inc"); include ("geoipregionvars.php"); $con = geoip_open ( "GeoIP.dat" ); $IP = $_SERVER['REMOTE_ADDR']; $country = geoip_country_name_by_addr ( $con, $IP ); $code = geoip_country_code_by_addr ( $con, $IP ); geoip_close ( $con ); $conn = geoip_open ( "GeoLiteCity.dat" ); $record = GeoIP_record_by_addr ( $conn, $IP ); geoip_close ( $conn ); ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>IP Detector o_O</title> </head> <body bgcolor="#000"> <center><font size="5" color="YELLOW">IP: <?php echo $IP . " -> " . $country . " (" . $code . ") близ " . $record->city; ?></font><br> <img src="http://demotivation.me/images/20101019/ylysgiexj0mt.jpg"></center> </body> </html>
Итак, объясню без мануальчика, постараюсь. Для начала получаем архив с GeoIp.dat и GeoIp.php. PHP: http://depositfiles.com/ru/files/eocp0zxzn Далее создаем функцию определения страны, предрарительно подключив библиотеку geoip.php PHP: require_once( "geoip.php" ); PHP: function getcountry( ) { $geo = geoip_open( "GeoIP.dat", GEOIP_STANDARD ); $cnt = geoip_country_code_by_addr( $geo, $_SERVER['REMOTE_ADDR'] ); if ( !$cnt ) { $cnt = "-"; } geoip_close( $geo ); return $cnt; } И далее просто вызываем эту функцию, то есть : PHP: $strana = getcountry( ); Так же можно определить не только IP, который попал на страницу, а любой другой, изменив немного функцию. Как то вот так. Упс... Не видел второй страницы. Все оказывается решили до меня