Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Geolokalizacja
Forum PHP.pl > Forum > Gotowe rozwiązania
Mike122
Witam. Wiem że temat był dużo razy ale jednak żadna z darmowych baz nie jest dobra.
http://ip-to-country.webhosting.info
http://ripe.net/
Nie wykrywają np. adresów IP z USA (http://ripe.net).
Przeszukałem całe forum jednak i tutaj nie jest też za dobrze.
Czy ktoś z was posiada dobry skrypt Geolokalizacji?
Jeśli tak proszę o niego.


OK Zrobiłem to.
Może komuś się przyda:
  1. <?php
  2. function geolokalizacja($ip_goe_local){
  3. $url = "http://www.fileformat.info/system/iplocation.htm?ip=".$ip_goe_local."";
  4. $web = implode('', file($url));
  5. $start_ip = strpos($web, '<td>Country code=') + 17;
  6. $stop_ip = strpos($web, '<br/>Country name=');
  7. $ip = substr($web, $start_ip, $stop_ip-$start_ip);
  8. return $ip;
  9. }
  10. ?>

Funkcja wyciąga sam znacznik np. PL, DE, CZ, US, UK itd.

Użycie:
  1. <?php
  2. print geolokalizacja("12.81.12.12"); //Jeśli chcemy wyświetlić
  3. $kraj = geolokalizacja("12.81.12.12"); //Jeśli chcemy przypisać zmiennej
  4. ?>
Bastion
Nie prościej, szybciej ( baza danych lokalna ) skorzystać z Class5.Scout ?

Gelokalizacja : http://class5.jarzebski.pl/demo/scout/examples/example05.php
System / Browser : http://class5.jarzebski.pl/demo/scout/examples/example01.php

  1. <?php
  2.  
  3. /*
  4.  Przyklad 5
  5.  Geolokalizacja adresu IP na terenie Polski
  6. */
  7.  
  8. define('CLASS5_CHARSET', 'iso-8859-2');
  9.  
  10. require_once('../libs/class5.scout.php');
  11.  
  12. $scout = new Scout;
  13.  
  14. /* Możliwe jest wskazanie klasie adresu IP do zlokalizowania */
  15. if (isset($_GET['ip']))
  16. {
  17. $scout -> set_ip($_GET['ip']);
  18. }
  19. /* w przeciwnym wypadku IP zostanie automatycznie pobrany ze zmiennej */
  20.  
  21. print '<b>Podstawowe informacje :</b>';
  22. print '<br />User IP : '.  $scout->get_ip();
  23. print '<br />User Proxy : '. $scout->get_proxy();
  24. print '<br />Route IP : '. $scout->get_route_ip();
  25. print '<br />User ID : '.  $scout->get_uid();
  26.  
  27. print '<br /><br /><b>Państwo : </b>';
  28. if ($scout->is_country())
  29. {
  30. print '<br />Flaga : <img src="../libs/flags/'.$scout->country('flag').'">';
  31. print '<br />Państwo (pl) : '.  $scout->country('pl_name');
  32. print '<br />Państwo (en) : '.  $scout->country('en_name');
  33. print '<br />Państwo (de) : '.  $scout->country('de_name');
  34. print '<br />Symbol : '.  $scout->country('symbol');
  35. print '<br />Locale : '.  $scout->country('locale');
  36. print '<br />Locale (array) : ';  print_r($scout->country('array_locale'));
  37. print '<br />Pełna nazwa : '. $scout->country();
  38. print '<br />Strefa czasowa : '.  $scout->country('utc');
  39. print '<br />Strefa czasowa (array) : '; print_r($scout->country('array_utc'));
  40.  
  41. $saving = ($scout->country('saving')) ? 'Tak' : 'Nie';
  42.  
  43. print '<br />Obowiązue czas zimowy/letni : '. $saving;
  44.  
  45. } else
  46. {
  47. print '<br />... brak adresu w bazie danych';
  48. }
  49.  
  50. print '<br /><br /><b>Geolokalizacja : </b>';
  51. if ($scout->is_geo())
  52. {
  53. print '<br />(BL) North : '. $scout->geo('n');
  54. print '<br />(BL) East : '.  $scout->geo('e');
  55. print '<br />(XY) X : '. $scout->geo('x');
  56. print '<br />(XY) Y : '. $scout->geo('y');
  57. print '<br />Miasto : '. $scout->geo('town');
  58. print '<br />Powiat : '. $scout->geo('district');
  59. print '<br />Województwo : '.  $scout->geo('province');
  60.  
  61. /* Dopuszczalne rozmiary mapy : 600x554, 500x462, 400x369, 300x277, 240x222, 200x
    185, 180x166 */
  62. /* Jak tworzyc wlasne mapy przeczytasz w pliku FAQ */
  63.  
  64. if ($scout->set_calibrate(500,462))
  65. {
  66. print '<br />Punkt : '.  $scout->point('url');
  67. print '<br /><br /><img src="mapa.php?'.$scout->point('url').'" />';
  68. }
  69. } else
  70. {
  71. print '<br />... brak adresu w bazie danych';
  72. }
  73.  
  74. ?>
Mike122
Na samym początku chciałem tego użyć ale Class5.Scout pod adresem:
http://forum.php.pl/index.php?showtopic=42519
były przykłady a linki do pobrania klasy 'umarły'.
Szukałem na Google najnowszej wersji Class5.Scout 1.8.1 ale nie znalazłem.
Bastion mógłbyś udostępnić najnowszą wersje?
Bastion
Specjalnie dla Ciebie : http://class5.jarzebski.pl/repo/
Mike122
Dziękuję Ci Bastionsmile.gif
Saddam92
Czy ja też mógłbym prosić o ponowne wystawienie klasy do sciagniecia questionmark.gif
uraharu
Czy ktoś mógłby mi udostępnić całą klasę scout5?

Mam problem z wyświetlaniem miasta
mam taki kod:

  1. if ($scout->is_geo())
  2. {
  3. //miasto
  4. $city = $scout->geo('town');
  5. }
  6. else
  7. {
  8. $city = $_SERVER['GEOIP_CITY'];
  9. }


i niestety z klasy $scout nie chce pobrać mi nazwy miasta w ogóle nie przechodzi If'a, nie wiem dlaczego :/
mlawnik
Tak ciężko poszukać?

http://trackip.santyago.pl/pobierz.html
Wilu88
A ja mam pytanie dotyczące bazy danych adresów IP TrackIP TIB. Z racji że zajmuje ona 800kb, to znaczy że gdy moją stronę w niedługim czasie odwiedzi 200 osób to zużyje ok. 200mb transferu odczytując tylko miejscowość?

Mam system statystyk w których zapisuje adres IP oraz miasto.


Czy jest możliwość odchudzenia tego pliku tylko do miast? Gdyż ni potrzebuje innych danych.
Bastion
W żadnym wypadku. Nie wiem jakim cudem wpadłeś na pomysł, że pobierane jest za każdym razem 800kB. Bazę pobiera się raz.
wewior
Chciałem trochę odświeżyć temat.
Mam konkretnych przypadek że muszę ustalić czy klient jest z USA czy z pozostałych części świata, tylko takie dwie opcje.
Czy jest taka możliwość aby to sprawdzić nie korzystając z baz, ip itd? Może jakieś dane przeglądarki się przedstawiają czymś co mi powie czy klient z USA? Np kod języka.

Dzięki z góry.
yevaud
rzuc okiem w Zend_Locale, metoda getBrowser
wewior
A da radę jakimiś zmiennymi serwerowymi? Żeby nie trzeba było korzystać z Zend Framework. To prosta stronka i tylko takie rozpoznanie potrzebne: USA czy pozostali...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.