Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Klasa] Scout 1.8.0
Forum PHP.pl > Inne > Oceny
Stron: 1, 2
Bastion
Final 1.0.0 :

Wykrywa ponad 3mln adresów IP z bazy OpenGEO, warto zaznaczyc ze
baza CSV OpenGEO zajmuje 300MB a baza ScoutGEO 300kB i zawiera
dodatkowe informacje o polozeniu geograficznym w systemie BL i XY :

Działa tak :

Z automatyczna detekcja IP / User agent :
Demo : http://www.vertis.com.pl/demo/scout/examples/example01.php
  1. <?php
  2.  
  3. require_once('../libs/class5.scout.php');
  4.  
  5. $scout = new Scout;
  6.  
  7. print '<b>Podstawowe informacje :</b>';
  8. print '<br />User IP : '.  $scout->get_ip();
  9. print '<br />User Proxy : '. $scout->get_proxy();
  10. print '<br />User UserAgent : '.$scout->get_useragent();
  11.  
  12. print '<br /><br /><b>System operacyjny : </b>';
  13. print '<br />Nazwa : '.  $scout->os('name');
  14. print '<br />Wersja : '. $scout->os('version');
  15. print '<br />Pełna : '.  $scout->os();
  16.  
  17. print '<br /><br /><b>Przeglądarka : </b>';
  18. print '<br />Nazwa : '.  $scout->browser('name');
  19. print '<br />Wersja : '. $scout->browser('version');
  20. print '<br />Dodatek : '.  $scout->browser('addon');
  21. print '<br />Pełna : '.  $scout->browser();
  22.  
  23. print '<br /><br /><b>Geolokalizacja : </b>';
  24. if ($scout->is_geo())
  25. {
  26. print '<br />(BL) North : '. $scout->geo('n');
  27. print '<br />(BL) East : '.  $scout->geo('e');
  28. print '<br />(XY) X : '. $scout->geo('x');
  29. print '<br />(XY) Y : '. $scout->geo('y');
  30. print '<br />Miasto : '. $scout->geo('town');
  31. print '<br />Województwo : '.  $scout->geo('province');
  32. } else
  33. {
  34. print '<br />... brak adresu w bazie danych';
  35. }
  36.  
  37. ?>


Lub z wymuszeniem :
Demo : http://www.vertis.com.pl/demo/scout/examples/example02.php
  1. <?php
  2.  
  3. require_once('../libs/class5.scout.php');
  4.  
  5. $scout = new Scout;
  6.  
  7. $scout -> set_ip('212.126.1.2');
  8. $scout -> set_useragent('Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0)');
  9.  
  10. print '<b>Podstawowe informacje :</b>';
  11. print '<br />User IP : '.  $scout->get_ip();
  12. print '<br />User Proxy : '. $scout->get_proxy();
  13. print '<br />User UserAgent : '.$scout->get_useragent();
  14.  
  15. print '<br /><br /><b>System operacyjny : </b>';
  16. print '<br />Nazwa : '.  $scout->os('name');
  17. print '<br />Wersja : '. $scout->os('version');
  18. print '<br />Pełna : '.  $scout->os();
  19.  
  20. print '<br /><br /><b>Przeglądarka : </b>';
  21. print '<br />Nazwa : '.  $scout->browser('name');
  22. print '<br />Wersja : '. $scout->browser('version');
  23. print '<br />Dodatek : '.  $scout->browser('addon');
  24. print '<br />Pełna : '.  $scout->browser();
  25.  
  26. print '<br /><br /><b>Geolokalizacja : </b>';
  27. if ($scout->is_geo())
  28. {
  29. print '<br />(BL) North : '. $scout->geo('n');
  30. print '<br />(BL) East : '.  $scout->geo('e');
  31. print '<br />(XY) X : '. $scout->geo('x');
  32. print '<br />(XY) Y : '. $scout->geo('y');
  33. print '<br />Miasto : '. $scout->geo('town');
  34. print '<br />Województwo : '.  $scout->geo('province');
  35. } else
  36. {
  37. print '<br />... brak adresu w bazie danych';
  38. }
  39.  
  40. ?>


a pobrać można jak zwykle tu : http://www.vertis.com.pl/
Vomit
Bastion: skad brales dane dla ScoutGeo ?
Bastion
z www.opengeo.pl - niestety ich CSV to 300MB wiec trzeba bylo uszczuplic,
a jesli pytasz o wspolrzedne geograficzne - to z roznych rzeczy - atlasy, encykloipedie, internet smile.gif
bez obrazy ale niektorych wiosek trudno znalesc jakies wspolrzedne smile.gif bylo nawet ze dzwonilem do jakiejs miejscowosci o wspolrzedne smile.gif bo nigdzie nie szlo znalesc ;]
vieri_pl
Bastion Ty na prawdę poswiecasz sie swojej pracy. Co rusz nowe projekty i klasy smile.gif

Brawo !
hwao
Cytat(vieri_pl @ 2006-02-25 17:36:23)
Bastion Ty na prawdę poswiecasz sie swojej pracy. Co rusz nowe projekty i klasy smile.gif

Brawo !

yhy, brawo brawo popieram

Widac ze sie chlopak uczy.

Bardzo ciekawy pomysl, ale jednka rozdzielil bym te klasy na 2...
1. analiza danych o userze z user_agenta
2. lokalizacja skad jest po ip
Bastion
@hwao : szczerze tez nad tym myslalem, ale padlo na monolit - w nastepnym relase bedzie specjanle narzedzie do dopasowania siatki geolokalizacyjnej do mapy bitowej mapy Polski, zeby latwo mozna bylo nanosic punkty B,L smile.gif

@vieri_pl: staram sie smile.gif powoli juz nabiera ksztaltow ten CMS o ktorym wspominalem

Vomit
class Jolantha? laugh.gif
Domyslam sie skad taka nazwa, ale za co bedzie odpowiadala ? smile.gif
Bastion
smile.gif klasa odpowiedzialna za bezpieczenstwo i poprawnosc przekazywania danych, wykrywanie prob atakow, podawania blednych akcji, kombinowanie z parametrami, logowanie, powiadamianie admina.... a czemu Jolantha ? smile.gif Bo bedzie taka sama jak moja żonka - nic sie przed nia nie ukryje biggrin.gif laugh.gif laugh.gif
FiDO
Hehe biggrin.gif

Z nieba mi spadles z ta klasa.. wlasnie ostatnio sie zastanawialem nad jakims parserem user_agent'a. Teraz juz nie bede musial smile.gif Za jakis czas (jak juz bede na etapie, ze bede tego potrzebowal) potestuje ja troche glebiej i podziele sie dokladniejszymi uwagami.
TomASS
Nie wiem dlaczego, ale ex01 pokazuje ok:

Cytat
System operacyjny :
Nazwa : Windows
Wersja : XP
Pełna : Windows XP

Miasto : Wrocław
Województwo : dolno&para;l&plusmn;skie


A ex02:
Cytat
System operacyjny :
Nazwa : Windows
Wersja : Vista
Pełna : Windows Vista

Miasto : Poznań
Województwo : wielkopolskie

Może ja się nie znam :/
Bastion
ex02 - wyswietla wymoszony adres ip i useragenta - wiec jest ok smile.gif

Kod
    $scout -> set_ip('212.126.1.2');
    $scout -> set_useragent('Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0)');


@FiDO smile.gif cieszy mnie to ogromnie
TomASS
W takim razie Panowie czapki z głów.... kawał dobrej robty.
FiDO
Ok potestowalem to troche dluzej i mam nastepujace uwagi:

1) klasa do IP faktycznie powinna byc osobno.. mi np. ta funkcjonalnosc jest kompletnie niepotrzebna, a troche tego kodu do tego jest (no i baza ip'kow)

2) przydaloby sie wykrywanie botow wyszukiwarek (+ jakas metoda isBot() )

Narazie tyle ;]
Bastion
Ad1) Klasa rozdzielona w wersji CVS
Ad2) Prace w toku od wczoraj smile.gif
dragomir
hm, mieszkam sobie w poznaniu, a to chyba duze miasto, i z pierwszego przykladu mi wyszlo, ze nie ma tej lokacji w bazie
Bastion
jesli nie ma twojego adresu w bazie danych to nie ma sad.gif musialbys zarejestrowac swoje IP w OpenGEO : http://www.opengeo.pl/ .
spenalzo
A mi po raz pierwszy od dawna ten skrypt pokazał (korzystam z neozdrady), że faktycznie mieszkam w Poznaniu a nie w jakiejś dziurze na północy polski tongue.gif

Cytat
Miasto : Poznań
Województwo : wielkopolskie
Bastion
postanowilem rozbic klase na 3 moduly :

Scout - przegladarki / systemy operacyjne / boty
GeoScout - geolokalizacja
MobileScout - telefony komorkowe / urzadzenia przenosne ( jestem na etapie zbierania USER_AGENTow roznych marek i modeli - oraz wybranych parametrow - wlasnie jakie parametry bylyby intresujace do rozpoznania ? chodzi o to czy np. scout ma tez podwac np. rozdzialke wyswietlacza etc? czy jest to raczej zbedne )

Niemniej cala trojka bedzie dostepna w jednej paczce smile.gif Jakies sugestie?
xarr
Ja mam podobny zestaw klas (bez wykrywania regionu, tylko panstwa na zasadzie bazy ipkow oraz ustawien jezykowych browsera).

Rozpiska tego wyglada mniej wiecej tak:

klasa User (pobiera podstawowe dane, czyli user_agent oraz IP)
klasa Identification dziedziczy po User (rozpoznaje tylko czy to bot, czy nie)
klasa BotIdentification dziedziczy po Identification (probuje zidentyfikowac bota na podstawie user_agenta oraz bazki z botami oraz ustawia odpowiednia flage: zly, neutralny, niezidentyfikowany robal smile.gif)
klasa UserIdentification dziedziczy po Identification (tutaj oczywiscie szczegolowe info: typ,nazwa,wersja przegladary, os, kraj)

Pisane to bylo jakies 10 mc temu i dzisiaj rowniez nie jestem przekonany, co do poprawnego rozbicia tego na tyle klas, ot chociazby Identification, ktora odpowiada tylko ze stwierdzenie, czy mamy do czynienia z botem, czy userem, ew. czy bardziej prawdopodobne jest, ze jest to bot/user. Nie jestem tez pewny, czy w ogole dobrym pomyslem jest tutaj dziedziczenie, a przynajmniej w takiej postaci. Co sadzicie?

Bastion w tym threadzie wspomnial o kilku ciekawych rzeczach, ktorych u mnie brakuje. Ot, te regiony i detekcja telefonu komorkowego. To dla mnie bodziec by dopisac linijke w swoim ToDo smile.gif

Co do twoich pytan nadal uwazam, ze tego typu skrypty pelnia role glownie statystyczna. Jak tylko ktos probuje te wszystkie detekcje wykorzystac do sposobu ladowania takiego, czy innego layoutu (bo browser x kuma czesc css3, a y czesc css2) to kopie sobie dolki, w ktore kiedys sam wpadnie. Uwazam, ze zbieranie tak bardzo szczegolowych informacji o parametrach wykrytej komorki (wyswietlacz) jest zbedne. Do niczego Ci sie to raczej nie przyda. Informacja, ze jest to komorka styka, a jak jeszcze dorzucisz jaki model (Nokia 6210) to juz "swiat i ludzie" (z takiej informacji, przy pomocy google i tak zawsze bedziesz w stanie wyszukac wszystkie szczegoly odnosnie danego modelu smile.gif)

Odnosnie sugestii to dokladnie nie przygladalem sie twojej paczce, ale nie wspominales tu o probie detekcji innych rzeczy zainstalowanych u usera. Ot jakies pluginy, enabled js, itd. Za to wprawdzie glownie odpowiadac bedzie javascript (bo get_browser pokazuje tylko mozliwosci browsera), ale moze bedziesz mial checi i uda Ci sie cos fajnego znalezc/napisac. Przyznam sie, ze ja kiedys poleglem na tym.

Pozdrawiam
sztosz
Pierwsza klasa:
Cytat
Podstawowe informacje :
User Proxy :
User UserAgent : TERMINATOR

System operacyjny :
Nazwa :
Wersja :
Pełna :

Przeglądarka :
Nazwa :
Wersja :
Dodatek :
Pełna :

Geolokalizacja : 1394331646
Miasto : Poznań
Województwo : wielkopolskie

Druga:
Cytat
Podstawowe informacje :
User Proxy :
User UserAgent : Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0)

System operacyjny :
Nazwa : Windows
Wersja : Vista
Pełna : Windows Vista

Przeglądarka :
Nazwa : Internet Explorer
Wersja : 7.0b
Dodatek :
Pełna : Internet Explorer 7.0b

Geolokalizacja : 3565027586
Miasto : Poznań
Województwo : wielkopolskie


Co do pierwszej klasy:
UserAgent jest OK.
Chyba nie zgadza sie lokalizacja. Jestem neozdrajcą z Wałbrzycha, więc moja centrala to chyba Wrocław, ale moge się mylić.

Co do drógiej:
UserAgent wymuszony więc OK.

Ale czemu Vista? Mam win2003, nLitniętego ale nadal 2003. I czemu IE 7? Korzystam z Firefoxa z mnóstwem swietnych pluginów, chociaż owszem mam zainstalowane IE 7 2nd Preview. czy to może dlatego że win2003 + IE 7 w chwili obecnej jest teoretycznie niemożliwe i trzeba sie w podmianę plików bawić, o refleksie nie wspominajac?
No i ten poznań winksmiley.jpg
Balas
Cytat


Czy to czasem tego nie wyjasnia questionmark.gif tongue.gif
Bastion
Cytat(xarr)
Pisane to bylo jakies 10 mc temu i dzisiaj rowniez nie jestem przekonany, co do poprawnego rozbicia tego na tyle klas, ot chociazby Identification, ktora odpowiada tylko ze stwierdzenie, czy mamy do czynienia z botem, czy userem, ew. czy bardziej prawdopodobne jest, ze jest to bot/user. Nie jestem tez pewny, czy w ogole dobrym pomyslem jest tutaj dziedziczenie, a przynajmniej w takiej postaci. Co sadzicie?


Moim zdaniem rozbicie ma sens przy oddzieleniu elementow ze soba nie powiazanych, czyli jedna klasa zajmujaca sie useragentem i wyciaganych na jego postawie informacji, a druga operujaca na IP. Wtedy jakby dwie klasy moga dziala niezaleznie jedna od drugiej.

Cytat(xarr)
Uwazam, ze zbieranie tak bardzo szczegolowych informacji o parametrach wykrytej komorki (wyswietlacz) jest zbedne. Do niczego Ci sie to raczej nie przyda. Informacja, ze jest to komorka styka, a jak jeszcze dorzucisz jaki model (Nokia 6210) to juz "swiat i ludzie"


Wykrywanie bardziej szczegolywch parametorw ma snes mysle, moze z wyswietlaczem nie byl dobry przyklad, ale np sprawdzenie co potrafi obsluzyc zainstalowany j2me lub markup?
Kod
    j2me:
      cldc_10: true
      cldc_20: false
      midp_10: true
      midp_20: false
    markup:
      wml_1_1: true
      wml_1_2: false
      wml_1_3: false
      wmlscript_1_0: true
      wmlscript_1_1: true
      wmlscript_1_2: false
      wmlscript_1_3: false


Cytat(xarr)
Ot jakies pluginy, enabled js, itd. Za to wprawdzie glownie odpowiadac bedzie javascript (bo get_browser pokazuje tylko mozliwosci browsera), ale moze bedziesz mial checi i uda Ci sie cos fajnego znalezc/napisac. Przyznam sie, ze ja kiedys poleglem na tym.

Scout rozpoznaje jedynie modyfikacje IE jak Maxhton smile.gif Co do sprawdzania JS/Flasha etc to bardzo dobry pomysl uzbroic w to kolejny relase.


Cytat(sztos)
Chyba nie zgadza sie lokalizacja. Jestem neozdrajcą z Wałbrzycha, więc moja centrala to chyba Wrocław, ale moge się mylić.

Niestety Scout operuje na wpisach bazy danych OpenGEO - jesl Twoj IP jest tam tak wpisany to tak niestety jest wyswietlnay - to akurat nie jest blad dzialania skryptu.

Cytat(sztos)
Ale czemu Vista? Mam win2003, nLitniętego ale nadal 2003. I czemu IE 7? Korzystam z Firefoxa z mnóstwem swietnych pluginów, chociaż owszem mam zainstalowane IE 7 2nd Preview. czy to może dlatego że win2003 + IE 7 w chwili obecnej jest teoretycznie niemożliwe i trzeba sie w podmianę plików bawić, o refleksie nie wspominajac?
No i ten poznań winksmiley.jpg

Odp. prosta smile.gif poniewaz w trybie wymuszonym - podaje sie jaki useragent ma byc spraswoany, w przykladzie wymusilem 'Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0)" - co jest przetlumaczone poprawnie smile.gif
Vomit
Mozesz jeszcze dodac z jakiego panstwa:

http://ip-to-country.directi.com/

PS. Jak to jest z tymi adresami IP? Jest jakas zasada, reguła czy cokolwiek, wg. ktorych IP zostaja przydzielone? Bo mi wydaje sie, ze jest jeden wielki smietnik.
Bastion
regula jakas jest, ale nie zawsze sie sprawdza. czesto provider ma siedzibe w jedym miejscu a przypisuje ip sieciom w innych... wiec lipa
xarr
Klase tworzysz, zeby rozwiazywala konkretny problem i tylko go. Klasa user zbiera podstawowe informacje o wszystkim, co moze wlisc do Ciebie na www. Cokolwiek nie wejdzie ma jakies IP i agent`a (zazwyczaj). Chociaz sa to rozne info to jednak sluza do tego samego, identyfikacji. I nastepnie w zaleznosci od tego, co to jest gromadzisz wiecej info. Jesli jest to bot, to nie potrzeba Ci wykrywania zadnych browserow czy innych OSow, a conajwyzej nazwe tego bota i czy jest to jakis spambot, robot indeksujacy, czy inne cudo. Jesli user, to nie jest Ci potrzebna metoda zwracajaca nazwe bota, albo pobierajaca nazwe z bazy, ale info o browserze i osie, przykladowo. Stad u mnie jest to tak rozbite na dwie klasy i w zaleznosci od tego, co zwroci Identification ladujemy odpowiednia klase i pobieramy interesujace nas info.
Bastion
Witam smile.gif Nowy Scout 1.3.0 został wydany, co nowego :

Kod
- nowe funkcje odczytywania parametrow ekranu : js() screen()
- nowe funkcje geolokalizacji panstwa : is_country(), country()
- przy rozpoznaniu telefonu, sprawdzany tez jest system operacyjny w telefonie
- nowe telefony : Samsung SGH-xxx, Samsung SPH-xxx, Sanyo MM-xxx, Sanyo Sxxx,
   Sanyo SCP-xxx, Motorola MPxxxx, Motorola Axxxx, BlackBerry xxxx
- zmiana metody wykrywania telefonu komorkowego, sprawdzane gdy systemem jest
   Windows CE lub SymbianOS, lub gdy nie wykryto zadnego innego telefonu ani bota
- poprawka przy wykrywaniu systemu Windowsa CE oraz SymbianOS
- poprwienie nazwy modelu przy wykrywaniu telefonow Samsunga, nazwa SGHodel
   rozbijana jest na rzeczywista nazwa SGH-model / SPH-model
- oddzielenie bazy danych ScoutDB od bazy


Do dzialania potrzeba sciagnac sama klase oraz baze danych ScoutDB. Obie paczki dostepne pod adresem : http://www.vertis.com.pl/

Nowy example04.php - wykrywanie telefonu komórkowego oraz systemu operacyjnego :
LiveDemo : http://www.vertis.com.pl/demo/scout-1.3/ex...s/example04.php
  1. <?php
  2.  
  3. /*
  4.  Przyklad 4
  5.  Przykład wykrywania telefonu
  6. */
  7.  
  8. require_once('../libs/class5.scout.php');
  9.  
  10. $scout = new Scout;
  11.  
  12. // $scout->set_useragent('MOT-V300/0B.08.74R MIB/2.2 Profile/MIDP-2.0 Configuration/CLDC-1.0');
  13. // $scout -> set_useragent('MOT-MPx220/1.280 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Smartphone; 176x220)');
  14. $scout -> set_useragent('Nokia6682/2.0 (3.01.1) SymbianOS/8.0 Series60/2.6 Profile/MIDP-2.0 Configuration/CLDC-1.1');
  15. print '<b>Podstawowe informacje :</b>';
  16. print '<br />User UserAgent : '.$scout->get_useragent();
  17.  
  18. if ($scout->is_mobile())
  19. {
  20. print '<br /><br /><b>Telefon : </b>';
  21. print '<br />Producent : '.  $scout->mobile('vendor');
  22. print '<br />Model: '. $scout->mobile('model');
  23. print '<br />System operacyjny : '. $scout->mobile('os');
  24. print '<br />Pełna nazwa: '. $scout->mobile();
  25. } else
  26. {
  27.  print '<br />OS:'.$scout->os().'<br />';
  28.  print 'BR:'.$scout->browser();
  29. }
  30.  
  31. ?>


Nowy example05.php - Rozpoznanie panstwa na podstawie IP oraz geolokalizacja z zanznaczeniem punktu na mapie Polski.
LiveDemo : http://www.vertis.com.pl/demo/scout-1.3/ex...s/example05.php
Jesli Twoj adres IP nie bedzie w bazie danych, a chcesz zobaczyc przyklad geolokalizacji na mapie, uzyj trybu wymuszonego : http://www.vertis.com.pl/demo/scout-1.3/ex...xample05.php?ip
Uwagi : Paczka zawiera dwa pliki PNG, za pomoca ktorych stworzysz wlasna mape w odpowiadajacej ci kolorystyce i wymiarach.
  1. <?php
  2.  
  3. /*
  4.  Przyklad 5
  5.  Geolokalizacja adresu IP na terenie Polski
  6. */
  7.  
  8. require_once('../libs/class5.scout_geo.php');
  9.  
  10. $scout = new ScoutGEO;
  11.  
  12. /* Możliwe jest wskazanie klasie adresu IP do zlokalizowania */
  13. if (isset($_GET['ip']))
  14. {
  15. $scout -> set_ip('212.126.1.2');
  16. }
  17. /* w przeciwnym wypadku IP zostanie automatycznie pobrany ze zmiennej */
  18.  
  19. print '<b>Podstawowe informacje :</b>';
  20. print '<br />User IP : '.  $scout->get_ip();
  21. print '<br />User Proxy : '. $scout->get_proxy();
  22.  
  23. print '<br /><br /><b>Państwo : </b>';
  24. if ($scout->is_country())
  25. {
  26. print '<br />Państwo : '.  $scout->country('name');
  27. print '<br />Symbol : '. $scout->country('symbol');
  28. print '<br />Pełna nazwa : '.  $scout->country();
  29. } else
  30. {
  31. print '<br />... brak adresu w bazie danych';
  32. }
  33.  
  34. print '<br /><br /><b>Geolokalizacja : </b>';
  35. if ($scout->is_geo())
  36. {
  37. print '<br />(BL) North : '. $scout->geo('n');
  38. print '<br />(BL) East : '.  $scout->geo('e');
  39. print '<br />(XY) X : '. $scout->geo('x');
  40. print '<br />(XY) Y : '. $scout->geo('y');
  41. print '<br />Miasto : '. $scout->geo('town');
  42. print '<br />Województwo : '.  $scout->geo('province');
  43.  
  44. /* Dopuszczalne rozmiary mapy : 600x554, 500x462, 400x369, 300x277 */
  45. /* Jak tworzyc wlasne mapy przeczytasz w pliku FAQ */
  46.  
  47. if ($scout->set_calibrate(500,462))
  48. {
  49. print '<br /><br /><img src="mapa.php?'.$scout->point('url').'" />';
  50. }
  51. } else
  52. {
  53. print '<br />... brak adresu w bazie danych';
  54. }
  55.  
  56. ?>


i na koniec example06 : detekcja rozdzielczosci i glebi kolorow
LiveDemo : http://www.vertis.com.pl/demo/scout-1.3/ex...s/example06.php
  1. <?php
  2.  
  3. /*
  4.  Przyklad 6
  5.  Detekcja parametrow ekranu za pomoca JS
  6. */
  7.  
  8. require_once('../libs/class5.scout.php');
  9.  
  10. $scout = new Scout;
  11.  
  12. // Jesli obawiamy sie ze wylaczone Cookies moze zapetlic skrypt
  13. if (!isset($_COOKIE['scout_width']))
  14. {
  15. // $scout->js('redirect.php'); // przekierowanie na redirect.php
  16. // $scout->js('no');  // bez przekierowania
  17. $scout->js(); // domyslnie php SELF
  18. }
  19.  
  20. print '<b>Ekran : </b>';
  21. print '<br />Szerokosc : '.  $scout->screen('width');
  22. print '<br />Wysokosc : '. $scout->screen('height');
  23. print '<br />Kolory : '. $scout->screen('depth');
  24. print '<br />Pełna : '.  $scout->screen();
  25.  
  26. ?>


HaveU fun smile.gif
mike
Ostatnio (czyt: 10 min. temu) postanowiłem dopisać sobie do Symfony klasę użytkownika, który ma już określone pochodzenie.
Przydałoby mi się do uniwersalnego zapisu liczb i dat.
Geolokalizacja jak się patrzy.

Pomyślałem że Scout by się nadał, ale jednak nie. Zauważyłem, że zwraca on dane w mało przydatny sposób.

I tu moja propozycja.
Przydałoby się żeby podawał jeszcze dene w ten sposób: nl_NL, pl_PL, en_US, ...

Przydałoby się do setlocale() i mi do Symfony tongue.gif do klasy użytkownika:
  1. <?php
  2.  
  3. $this->getUser()->setCulture( 'en_US' );
  4.  
  5. ?>
Vomit
I przy okazji najlepiej funkcja setlocale().

$scout -> setLocale();

I juz mamy ustawione automatycznie.
Bastion
Mowicie i macie smile.gif

Scout 1.5 relased :
Kod
- zmiana licencji na GPL ( zobacz plik LICENSE )
- angielskie nazwy państw 'en_names' w funkcji country()
- pobieranie locales danego panstwa 'locale' lub 'array_locale' w funkcji country()
- zmieniono indeks 'autc' na 'array_utc' w funkcji country()
- usnięto błedy :
   o) bug001 : pokazywanie czasu UTC+-X gdy liczba jest ujemna


Demo : http://www.vertis.com.pl/demo/scout/examples/example05.php

I mały przykładzik dla IP 64.202.189.183 (USA) :
http://www.vertis.com.pl/demo/scout/exampl...=64.202.189.183

  1. <?php
  2.  
  3. /*
  4.  Przyklad 5
  5.  Geolokalizacja adresu IP na terenie Polski
  6. */
  7.  
  8. require_once('../libs/class5.scout_geo.php');
  9.  
  10. $scout = new ScoutGEO;
  11.  
  12. /* Możliwe jest wskazanie klasie adresu IP do zlokalizowania */
  13. if (isset($_GET['ip']))
  14. {
  15. $scout -> set_ip($_GET['ip']);
  16. }
  17. /* w przeciwnym wypadku IP zostanie automatycznie pobrany ze zmiennej */
  18.  
  19. print '<b>Podstawowe informacje :</b>';
  20. print '<br />User IP : '.  $scout->get_ip();
  21. print '<br />User Proxy : '. $scout->get_proxy();
  22. print '<br />User ID : '.  $scout->get_uid();
  23.  
  24. print '<br /><br /><b>Państwo : </b>';
  25. if ($scout->is_country())
  26. {
  27. print '<br />Flaga : <img src="../libs/flags/'.$scout->country('flag').'">';
  28. print '<br />Państwo : '. $scout->country('name');
  29. print '<br />Państwo : '.  $scout->country('en_name');
  30. print '<br />Symbol : '.  $scout->country('symbol');
  31. print '<br />Locale : '.  $scout->country('locale');
  32. print '<br />Locale (array) : ';  print_r($scout->country('array_locale'));
  33. print '<br />Pełna nazwa : '. $scout->country();
  34. print '<br />Strefa czasowa : '.  $scout->country('utc');
  35. print '<br />Strefa czasowa (array) : '; print_r($scout->country('array_utc'));
  36.  
  37. $saving = ($scout->country('saving')) ? 'Tak' : 'Nie';
  38.  
  39. print '<br />Obowiązue czas zimowy/letni : '. $saving;
  40.  
  41. } else
  42. {
  43. print '<br />... brak adresu w bazie danych';
  44. }
  45.  
  46. print '<br /><br /><b>Geolokalizacja : </b>';
  47. if ($scout->is_geo())
  48. {
  49. print '<br />(BL) North : '. $scout->geo('n');
  50. print '<br />(BL) East : '.  $scout->geo('e');
  51. print '<br />(XY) X : '. $scout->geo('x');
  52. print '<br />(XY) Y : '. $scout->geo('y');
  53. print '<br />Miasto : '. $scout->geo('town');
  54. print '<br />Województwo : '.  $scout->geo('province');
  55.  
  56. /* Dopuszczalne rozmiary mapy : 600x554, 500x462, 400x369, 300x277, 240x222, 200x
    185, 180x166 */
  57. /* Jak tworzyc wlasne mapy przeczytasz w pliku FAQ */
  58.  
  59. if ($scout->set_calibrate(500,462))
  60. {
  61. print '<br />Punkt : '.  $scout->point('url');
  62. print '<br /><br /><img src="mapa.php?'.$scout->point('url').'" />';
  63. }
  64. } else
  65. {
  66. print '<br />... brak adresu w bazie danych';
  67. }
  68.  
  69. ?>
oldek bis
Cytat(Bastion @ 25.02.2006, 15:39 ) *
z www.opengeo.pl

Czy znacie zagraniczne odpowiedniki tej inicjatywy?

Cytat(Bastion @ 25.02.2006, 15:39 ) *
- niestety ich CSV to 300MB wiec trzeba bylo uszczuplic,

Może nie trzeba uszczuplać a zlikwidować redundancje od których w tych danych aż huczy... No ale darowanemu koniowi w zęby sie nie patrzy. Teaz by na tym koniu można było jeździć to należałobyby go podkuć, osiodłać i uzdę założyć, czyli znormalizować przez podział na tabele... Zanim się do tego zabiorę lepiej zapytam: czy może ktoś to juz zrobił?
---------dopisek
Nie czekając na odpowiedź zabrałem sie do tego groźnie wyglądającego CSV, okazało się że wśród circa 3,6 mln wpisów jest tylko 511 różnych miejscowości smile.gif więc nie taki diabeł straszny jak go malują cool.gif
Bastion
W Scout 1.5.0 , zredukowana baza danych CSV opengeo zajumue ~300kB z dodanymi wspolrzednymi geografcznymi miast w formacie BL i XY. Obecnie pracuje nad kolejna wersja obslugujaca moj nowy format bazy adresow IP (ScoutDB v3). Aktualnie rozmiary baz w Class5.Scout to :

43kB / poland.sdb

oraz

451kB / world.sdb (ip-to-country)
bigZbig
@Bastion fajne to - taki wstep do jakiegosz szerszego systemu statystyk.
Bastion
Fajne bedzie Scout 1.6 smile.gif baza danych nie bedzie poszatkowana na setki malych plikow jak w 1.5.
W nowej wersji beda tylko dwa pliki, jeden polski drugi na swiat. Zajmuja mniej niz obecenie, zawieraja
wiecej danych oraz wyszukiwanie konkretnego IP jest szybsze.

Tez myslalem o jakis wlasnych ststystykach, ale z tego co kiedys bylo wiadomo, podobno Zajec takie
robi. Jak skoncze FSP2 to moze sie wezme za jakies wlasne stasty.
bigZbig
A moze znajdz kogos do wspolpracy. Ty sie zajmiesz sposobem uzyskiwania danych o userze, a ktos inny np. opracuje sposob ich gromadzenia i przetwarzania
Bastion
smile.gif hum, bardzo ciekawy pomysl, ale jesli tak to ja juz swoja robote odwalilem wydajac Scouta. Jesli ktos przedemna nie zdeklaruje jej wykorzystania w takim systemie statystyk to pewnie zrobie to ja
Diablos
Nie mialem okazji przegladac najnowszego Scouta, ale mam jeszcze takie pomysly.

W starszych wersjach, nazwy systemow, przegladarek, telefonow komorkowych, botów były "na sztywno" ustalone w klasach.

Dobrze by bylo aby poza bazami Geo byly takze oddzielne bazy wlasnie tych powyzszych. Kazdy user bez ingerencji w biblioteke bedzie mogl podmienic bazy lub dopisac jakies wlasne.
Bastion
Wersja 1.7.0 :

  1. * nowa struktura klas, do wszystkich klas odwołujemy się za pomocą klasy szefa Scout
  2. * nowa stała CLASS_CHARSET określająca wyjściową stronę kodową
  3. * nowa klasa ScoutReferer :
  4. o $obj->is_referer() - zwraca TRUE jeśli informacja jest dostępna
  5. o $obj->is_search() - zwraca TRUE jeśli wejście nastąpiło z wyszukiwarki
  6. o $obj->referer() - pobiera informacje o wejściu
  7. o $obj->referer_search() - pobiera informacje wyszukiwarce oraz zapytaniu
  8. + rozpoznawane : Google, WP, Interia, Onet, Altavista, MSN, Yahoo, Netsprint
  9. o $obj->set_referer() - ustawia własny HTTP_REFERER
  10. * nowe funkcje klasy ScoutGEO :
  11. o $obj->is_local_ip($ip) - czy podany IP jest adresem prywatnym
  12. o $obj->get_route_ip() - zwraca routowalny adres użytkownika
  13. * nowe funkcje klasy ScoutAgent :
  14. o $obj->is_os() - zwraca TRUE jeśli są dostępne informacje o systemie operacyjnym
  15. o $obj->is_browser() - zwraca TRUE jeśli są dostępne informacje o przeglądarce
  16. * dodano nowy język nazw państw : niemiecki
  17. * zmiana systemu i18n - pliki językowe klasy ScoutGEO w osobnych plikach
  18. * zoptymalizowany mechanizm wyszukiwania adresów IP
  19. * nowa metoda wyboru języka państw :
  20. o $obj->country(pl_name) - polski
  21. o $obj->country(en_name) - angielski
  22. o $obj->country(de_name) - niemiecki
  23. * usnięcie błędów E_NOTICE | E_STRICT oraz kilka mniejszych poprawek
  24. * dodano kilka definicji podsieci loklanych przy detekcji $obj->is_local_ip($ip)


Nowy example05 : KLIK DEMO
  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. ?>


Nowa klasa ScoutReferer, example08.php : KLIK DEMO
  1. <?php
  2.  
  3. /*
  4.  Przyklad 8
  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. $scout -> set_referer('http://www.google.pl/search?hl=pl&q=Zabawy+gimpem&btnG=Szukaj+w+Google&lr=');
  15.  
  16. if ($scout->is_search())
  17. {
  18. print '<br /> Silnik wyszukiwarki : '. $scout -> referer_search('engine');
  19. print '<br /> Szukana fraza : '. $scout -> referer_search('keyword');
  20. }
  21.  
  22. if ($scout->is_referer())
  23. {
  24. print '<br /> Host : '. $scout -> referer('host');
  25. print '<br /> URL : '. $scout -> referer('url');
  26. }
  27.  
  28. $ip = '192.168.5.100';
  29. if ($scout->is_local_ip($ip))
  30. {
  31. print '<br /> Podany adres należy do puli lokalnych adresów';
  32. }
  33.  
  34. ?>


Jak zwykle do pobrania z http://dl.vertis.com.pl/
Nightwalker
Cześć,

Jak wiesz integruje Scout'a z IPB, i napotkałem dziwny problem, mianowicie:

  1. <?php
  2. //-----------------------------------------
  3. // Geolokalizacja
  4. //-----------------------------------------
  5.  
  6. define('CLASS5_CHARSET', 'utf-8');
  7.  
  8. require_once(ROOT_PATH . 'sources/classes/scout/class5.scout.php');
  9.  
  10. $scout = new Scout;
  11.  
  12. $DB->simple_construct( array( 'select' => 'ip_address as ip',
  13. 'from'  => 'members',
  14. 'where' => "`name`='{$info['name']}'" ) );
  15. $DB->simple_exec();
  16.  
  17. $scout_ip = $DB->fetch_row();
  18.  
  19. $scout->set_ip($scout_ip['ip']);
  20.  
  21. if($scout->set_calibrate(500,462) && $scout->is_country())
  22. {
  23. $info['geo'] = $scout->point('url');
  24. }
  25. ?>


Wyciągam z bazy ip (w 'czystej' postaci tzn XXX.XXX.XXX.XXX), tyle tylko że w razie fiaska (Scout nie znajdzie w bazie takiego IP) operacja jest wykonywana nadal, a $scout->point('url'); zwraca:

Kod
x=546&y=-110


IP jest dobrze wyciągane z bazy (na 100%).

Pozdravki
Bastion
Zmiany 1.8.0 :

Cytat
- cacheownia wyników zapytań country() oraz geo()
- nowa funkcja online_meter() pobierająca listę użytkowników online
- nowa funkcja online_info() pobierająca listę adresów IP przebywjących na stronie
- dodano detekcje przegladarki Flock
- optymalizacje w wyszukiwaniu informacji w bazach danych SDB


Przykład działania nowych funkcji : example10.php
Wynik : http://www.vertis.com.pl/demo/scout/examples/example10.php
  1. <?php
  2.  
  3. /*
  4.  Przyklad 10
  5. */
  6.  
  7. define('CLASS5_CHARSET', 'iso-8859-2');
  8.  
  9. require_once('../libs/class5.scout.php');
  10.  
  11. $scout = new Scout;
  12.  
  13. print 'Uzytkownicy online : '.$scout -> online_meter().'<br />';
  14. print 'Rozpoznani : ';
  15.  
  16. foreach($scout->online_info() as $ip)
  17. {
  18. $scout -> set_ip($ip);
  19. if ($scout->is_geo())
  20. {
  21.  print $scout->geo('town').', ';
  22. }
  23. }
  24.  
  25. echo '<br /><br /><img src="online.php">';
  26.  
  27. ?>
ikioloak
W licencji klas Class5 czytam
Cytat
Od dnia 18 czerwca 2006, wszystkie klasy z rodziny Class5 są rozprowadzane na zasadzie licencji LGPL. Oznacza to, że klasy mogą być wykorzystane całkowicie za darmo także do użytku komercyjnego.


A download Scouta i innych mozliwy jest tylko po wyslaniu sms'a.. O co chodzi?
nospor
Wykorzystac możesz za darmo, ale za ściągniecie musisz zaplacic winksmiley.jpg
damianeusz
Ale gdzie można teraz pobrać te dane jeśli domena vertis jest na sprzedaż?
Bastion
małe wsparcie - projekt zdechł (przynajmniej publicznie)

ostatnie wydania : http://pliki.jarzebski.pl/entry-6a3fa5564e...9375a24e7c4.htm
PdM
A czy gdzieś jest dostępna dokumentacja do projektów? Poprzednio również była pod vertis, a teraz?
Bastion
teraz niestety juz nie ma sad.gif
wijet
Czy ktos posiada dokumentacje do serii Class5 albo przynajmniej do systemu templatow?, ktora znajdowala sie w docupedii.
Moze ktos zachował na dysku snitch.gif
ikioloak
Google czesc zapisala: (linki 'kopia')
zur887
aktualne pliki są jescze dostępne do pobrania? bo na pliki.jarzebski.pl nic nie ma sad.gif
Bastion
Klasy powinny niebawem znów pojawić się na moim /dev/blogu
Vengeance
A czy ktoś wie/ma sposób na to, by sprawdzić czy użytkownik przychodzi z wielkiej brytanii?

Proszę o pomoc smile.gif
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-2025 Invision Power Services, Inc.