Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Город по IP


Рекомендуемые сообщения

Доброго времени суток. Подскажите пожалуйста, может кто использует у себя функцию для определения города по IP-адресу. Если у кого есть, поделитесь плиз. Язык PHP

Ссылка на комментарий
Поделиться на другие сайты

http://www.netip.de/ для начала.

This service provide geographic location information (city, country, postal code, latitude and longitude).

У меня сеть еле тянет, кажется, именно на этом сайте показывает карту, а на ней pin'ом (гвоздиком) красиво местоположение. Точно он. Карту рисует. Он. Но грузится у меня долго. Я - Курск, пожалуйста, коллеги - Белгород, пожалуйста, национальная почтовая служба - Москва, пожалуйста. Только здание не показывает. :D

Wandering IPs - программа загружает из Нета базу - 15 метров. И voi-la.

Виджеты для Оперы.

Завтра будет гораздо больше и подробно.

Только зачем тут PHP? Вопрос о каком-то личном сайте, при входе на который, тебе IP твой показывает? Это другой вопрос. Но найти можно. Тоже мне проблема.

Ссылка на комментарий
Поделиться на другие сайты

Я на своём сайте использую самописную баннерную систему. Она работает отлично. Мне нужно что бы баннеры менялись в зависимости от города. Вот и ищу функцию, которая принимает IP посетителя и возвращает город, которому этот IP принадлежит.

Ссылка на комментарий
Поделиться на другие сайты

1. Если для начала просто определять IP, так, например, при входе на главную страницу там, где расположена эта программа, показывается твой IP и даже браузер. Может автор поделится идеями.

2. Обязательно зайди вот сюда. Там много чего интересного.

3. In this section, you can find the list of all major IP address blocks allocated for each country. Список IP-адресов в формате CSV по странам. Хотя там России нет, не вижу, зато есть Украина. Еще не города, но уже первый шаг.

3. Не забывай про программы, использующие инструменты Ping, Trace, Whois.

Например, SI Network Mechanics. Может они натолкнут на мысль.

!

Предупреждение:

Artur88: Вчитайтесь в 1 пост данной темы и далее проведите анализ своих сообщений. просьба в дальнейшем не давать советы которые не имеют отношения к решению проблемы в теме

Ссылка на комментарий
Поделиться на другие сайты

XAKEPok: Страна по IP и

# <?#  #  function ip2country($ip) {#	  global $OOPSGlobal;#  #	  $country1 = 'NA';#	  $country2 = '-';#  #	  $ipn = (float) sprintf("%u", ip2long($ip));#  #	  if (!eregi ("^(127|10|172\.16|192\.168)\.", $ip)) {#  #		  $SQL = "#		 #		  SELECT#			  *#		  FROM#			  ip2country#		  WHERE#			  start_long <= {$ipn} AND stop_long >= {$ipn}#		 #		  ";#  #		  $row = $OOPSGlobal['SES']->db->QueryObject($SQL);#  #		  if($row) return array($row->country,$row->country_name,$row->start_ip,$row->stop_ip);#  #	  }#	  if (eregi ("^(127|10|172\.16|192\.168)\.", $ip)) {#		  return array('XXX','Local/Grey NetWork(s)','','');#	  }#  #	  return array($country1,$country2,'','');#  #  }#  #  ?>

а город что бы определить нужна просто база, а алгоритм тот же.

Ссылка на комментарий
Поделиться на другие сайты

XAKEPok: не за что :) Кстати я далёк от веб-строительства, просто достаточно воспользоваться поисковыми системами, на 80-90% вопросов есть ответы в интернете, что я кстати и сделал :)

Ссылка на комментарий
Поделиться на другие сайты

Да я уже нашел базу ip достаточно массивную. Могу выложить. Одно плохо - база 23мб. При импортировании загрузка на сервер большая, не каждый хостер пропускает. Мой например нет)

Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

Если кому интересно. выкладываю:

Дамп базы с IP (сори что на летитбит. Залил на то что было в соседней вкладке открыто)

Структура базы:

ID (autoincrement), начальный IP - конечный IP - город - регион - округ

Начальный и конечный IP сгенерированы функцией ip2long. База в UTF-8.

Вот пример определения города:

function get_city($link) {$ip = ip2long($_SERVER["REMOTE_ADDR"]);$result=mysql_query("SELECT * FROM geo WHERE ip1<='$ip' AND ip2>='$ip' LIMIT 1", $link); while ($row = mysql_fetch_array($result)) { $city = iconv("UTF-8", "windows-1251", $row['city']); return $city; }}

$link здесь - указатель на соединение с базой. Если не нравится структура запроса можете поизвращаться с BEETWEEN'ом, но я б не советовал.

Функция берёт IP и возвращает город, которому он принадлежит. База в UTF-8, поэтому что б вывести город в Windows-1251, перекодируем полученный город с помощью iconv. У меня сайт в windows-1251, если у вас в UTF-8, можете убрать преобразование и выводить город без него.

Ссылка на комментарий
Поделиться на другие сайты

  • 2 месяца спустя...
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...