Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript] Geolokalizacja miasta
fenix.robi
post
Post #1





Grupa: Zarejestrowani
Postów: 97
Pomógł: 7
Dołączył: 24.06.2008

Ostrzeżenie: (0%)
-----


Witam,
pytałem wujka google'a o geolokalizacje, gdyż potrzebuje znaleźć najbliższe miasto które znajduje się u odwiedzającego moją stronę, znalazłem skrypt

http://www.geo-ip.dnx.pl/geo.php

lecz moja strona ma charakter komercyjny, i odpada zamieszczanie adresów zwrotnych.

Zastanawiam się czy może jest jakieś zapytanie do google'a dzięki którym po podaniu IP pobierze takie dane jak dł. szer. geograficzną oraz miasto, dla mnie najważniejsza rzeczą jest miasto.

Z góry dziękuję za odpowiedź.

Ten post edytował fenix.robi 21.01.2011, 08:13:20
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Tak, jest. Google maps + użycie geokodowania (IMG:style_emoticons/default/smile.gif) Podajesz kilka danych jak choćby miasto, województwo i dostajesz wynik. Tu masz już w najnowszej wersji 3. Choć większość serwisów używa jeszcze wersji2. Róznice są zauważalne. Nie chodzi nawet o sposób używania. Nie wiem czemu tak jest, ale mapy w v3 i ich kafle są o wiele wyrazistsze, brak im rozmycia.
http://code.google.com/intl/pl/apis/maps/d....html#Geocoding
Go to the top of the page
+Quote Post
fenix.robi
post
Post #3





Grupa: Zarejestrowani
Postów: 97
Pomógł: 7
Dołączył: 24.06.2008

Ostrzeżenie: (0%)
-----


W sumie trochę mi przybliżyło rozwiązanie problemu, lecz to go nie rozwiązuje, gdyż potrzebuje podać współrzędne aby dostać adres, a ja operuję tylko adresem IP użytkownika (gość), myslałem ze znalazłem skrypt na http://www.vista.pl/webmaster/127_geolocal...acja_w_php.html lecz niestety brak klucza google dla tej domenty.
Go to the top of the page
+Quote Post
thek
post
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Powiem tam... Skrypt jaki masz nie działa, bo curl używa strony która się sypie (IMG:style_emoticons/default/winksmiley.jpg) Tylko że przy tym wysypaniu się zwróciła mi jednocześnie adres serwera z którego korzysta do geokodowania. Adres w skrypcie jest tylko pośrednikiem i można go po prostu obejść. Przebuduj nieco skrypt by używał
http://api.hostip.info/get_html.php?ip=ADR...p;position=true
a w wyniku dostaniesz choćby coś takiego (IMG:style_emoticons/default/smile.gif)
Kod
Country: POLAND (PL)
City: Warsaw

Latitude: 52.2333
Longitude: 21
IP: ADRES_IP
a to już banalnie się obrabia i co najważniejsze... dostajesz z tej strony współrzędne do geokodowania wprost na tacy (IMG:style_emoticons/default/smile.gif) Tylko uważaj! Nie zawsze znajduje! Jeśli tak będzie w Twoim przypadku to musisz użyć geokodowania po nazwie państwa i miasta choćby od google jakie wspomniałem.

Dodatkowo zacząłem się bawić modyfikacją adresu url i wiem, że nie musisz dostać html, ale także xml modyfikując do formy:
http://api.hostip.info/get_html.php?ip=ADR...p;position=true
By było weselej, to da się też dorwać format JSON, ale już żądaniem POST o nieznanym mi formacie, bo próba wywołania
http://api.hostip.info/get_json.php?ip=ADR...p;position=true
zwraca błąd, iż nie przesłałem pliku. Zapewne da się z tego adresu wyciągnąć jeszcze więcej, ale nie mam już czasu by się bawić.

Najważniejsza zaś rzecz w całości? Serwer zwracający odpowiedź jest bardzo szybki (IMG:style_emoticons/default/smile.gif) Zazwyczaj dostawałem odpowiedź w czasie około sekundy od momentu wpisania adresu do otrzymania wyniku. Podany w znalezionym przez Ciebie skrypcie był z powodu byków nieosiągalny.
Go to the top of the page
+Quote Post
fenix.robi
post
Post #5





Grupa: Zarejestrowani
Postów: 97
Pomógł: 7
Dołączył: 24.06.2008

Ostrzeżenie: (0%)
-----


(IMG:style_emoticons/default/biggrin.gif) przed przeczytaniem twojego postu natknąłem się na tą stronę, sprawdziłem moje IP i wyświetliło mi Berlin, co prawda niedaleko mi do granicy PL-DE ale zazwyczaj pokazuje mi przy tym adresie najdalej Wrocław (IMG:style_emoticons/default/biggrin.gif) , sprawdziłem tez koordynaty to też mi wskazuje na Berlin, ale dzięki za zaangażowanie, szukam dalej (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
thek
post
Post #6





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Zapewne dlatego, że wyszukuje nie konkretny adres, ale adres ISP. Możesz jeszcze kombinować z obróbką danych taką:
http://www.db.ripe.net/whois?form_type=sim...p;submit=Search
Ale tu już masz więcej zabawy z wyrażeniami regularnymi.
Go to the top of the page
+Quote Post
fenix.robi
post
Post #7





Grupa: Zarejestrowani
Postów: 97
Pomógł: 7
Dołączył: 24.06.2008

Ostrzeżenie: (0%)
-----


Znalazłem taką stronkę:
http://www.melissadata.com/lookups/iplocat...dress=<adres IP>

i strona pokazuje mi poprawne miasto

  1. <tr class="tdresul01"><td class="columresult">IP Address</td><td align="left"><b>ARES IP</b></td></tr>
  2. <tr><td class="columresult">City</td><td align="left"><b>Zielona Gora</b></td></tr>
  3. <tr class="tdresul01"><td class="columresult">State or Region</td><td align="left"><b>Lodzkie</b></td></tr>
  4. <tr><td class="columresult">Country</td><td align="left"><b>Poland</b></td></tr>
  5. <tr class="tdresul01"><td class="columresult">ISP</td><td align="left"><b></b></td></tr>


i moje wyrażenie regularne nie pobiera mi Miasta
  1. $objCurl = curl_init('http://www.melissadata.com/lookups/iplocation.asp?ipaddress='.$varIp);
  2. ...
  3. $reg = '#City</td><td align="left"><b>(.+?)</b></td>#';


skrypt przerobiony z pierwszego postu
Go to the top of the page
+Quote Post
thek
post
Post #8





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Nie działa, bo masz niezabezpieczone znaki specjalne. W tym przypadku są to / i one robią problem.
  1. $reg = '#City<\/td><td align="left"><b>(.+?)<\/b><\/td>#';
Teraz powinno zadziałać. Swoja drogą mój adres IP na stronie melissadata nadal prowadzi i wskazuje na adres providera, czyli Warszawę. Za to description w ripe.net już pokazywało właściwe miasto, czyli Konin. Jak więc widzisz, nadal nie jest to idealne, bezpieczne i wiarygodne rozwiązanie.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 22:17