Что местоположение обнаруживают методы для IP-адресов?
Я знаю для взгляда на$_SERVER['HTTP_ACCEPT_LANGUAGE']
(не точный, но главным образом полезный для обнаружения местоположения, например, если пользовательские французы набора диапазона IP к их браузеру затем это означает, что этот диапазон) принадлежит Франции
иgethostbyaddr($_SERVER['REMOTE_ADDR'])
(для взгляда высокоуровневого домена кода страны)
затем может быть к whois gethostbyaddr($_SERVER['REMOTE_ADDR'])
иногда:$HTTP_USER_AGENT
(Строка агента пользователя Firefox имеет код языка, не точный, но главным образом может использоваться для обнаружения местоположения),
Также я знаю, как получить часовой пояс, но он не работает в новых браузерах. Кроме того, существует проблема CSS, которая обнаруживает историю посетителя, она может использоваться для наблюдения то, что Google и страницы Википедии он посетил (google.co.uk, google.com.tr)
Но что относительно городов?
Вы не сможете сделать это без базы данных, которая сопоставляет IP-адреса с городами / странами / поставщиками. Существуют коммерческие предложения, такие как ip2location , которые вы можете использовать. Насколько мне известно, бесплатной альтернативы нет, поскольку поддержка такой базы данных IP - это довольно большая работа. Бесплатная альтернатива: GeoIP2
Обновление: Есть несколько вещей, которые позволят вам создать такую базу данных, если вы потратите достаточно времени:
Существуют базы данных (некоторые из них не содержат charge), который можно использовать для преобразования IP-адресов в города:
например: http://www.maxmind.com/app/geolitecity
Одним из способов составления таких баз данных является информация whois. Например, чтобы определить местоположение 69.59.196.211:
fmark@home:~$ host 69.59.196.211 211.196.59.69.in-addr.arpa указатель доменного имени stackoverflow.com. fmark@home:~$ whois stackoverflow.com
Whois Server Version 2.0
Доменные имена в доменах .com и .net теперь могут быть зарегистрированы у многих различных конкурирующих регистраторов.
> Регистрант: stackoverflow.com llc
410 Clayton Ave El Cerrito, Калифорния 94530 Соединенные Штаты
Очевидно, что это не очень точно, поэтому предположительно используются более сложные методы.