Cześć,
czy może ktoś podrzucić jakiś pomysł jak zaimplementować licznik unikalnych wizyt w Wordpress per strona? Wiem, że są pluginy - ja potrzebuję mieć dostęp do tej wartości (unikalnych wizyt) w kodzie PHP. Ktoś coś?
Czy treść jest ogólnodostępna czy dla zarejestrowanych użytkowników?
Jeżeli ogólnodostępna i w czystym PHP, to proponuję wysyłać ciastko, które wskazuje, że to odwiedzenie zostało zliczone. Jeżeli to ciasto zostanie odebrane, to odwiedzenie się nie liczy. Oprócz ciastka proponuję też uzyskać adres IP, z którego jest połączenie do serwera, żeby zliczyć wg zasad, które dadzą przybliżoną liczbę użytkowników:
- Jedna i ta sama instancja przeglądarki, czyli na ogół jedno urządzenie będzie liczone jeden raz niezależnie od adresu IP, rozpoznaniu urządzenia służy ciastko.
- Jeden adres IP będzie liczony jeden raz niezależnie od liczby urządzeń. W wielu przypadkach można posiadać kilka urządzeń łączących się z internetem, ale w większości przypadków wszystkie użytkowane w domu, za pośrednictwem routera mają ten sam IP publiczny.
Oczywiście da się sfałszować takie zliczanie, ale zliczanie jednego urządzenia jeden raz i jednego adresu IP jeden raz to zawsze jakieś utrudnienie, a w szczególności kolejne odświeżenia nie będą liczone jako kolejne wizyty.
W przypadku treści tylko dla zarejestrowanych użytkowników, oprócz powyższych zasad, dodatkowo zliczać danego użytkownika jeden raz niezależnie od urządzenia i adresu IP. Dyskusyjne jest to, czy jak jest kilka kont na tym samym urządzeniu i na tym samym IP, to liczyć jeden raz czy tyle razy, ile jest kont.
Wszystko zależy do czego chcesz to użyć i jaki jest cel tego licznika.
@andrzejlisek napisał co trzeba i na drobne potrzeby jest to rozwiązanie ok ale lepiej żeby to strona sama "zgłaszała obecność" do serwera bo samo blokowanie po cookie to za mało i może spowodować niekontrolowane rośnięcie licznika przy każdym odświeżeniu jeśli po stronie zaczną chodzić np. roboty indeksujące albo coś co cookie nie obsługuje.
Można też spróbować bez cookie i posłużyć się parą:
- adres IP
- fingerprint ( zobacz to https://github.com/fingerprintjs/fingerprintjs albo https://fingerprint.com/blog/browser-fingerprinting-techniques/ )
W ogólności identyfikacja użytkownika na stronie WWW to dość skomplikowana sprawa. Rozróżnienia człowieka od robota może być dużym wyzwaniem.
Niektórzy np. zliczają wejście dopiero gdy zostanie wykryta akcja typu click
, scroll
, mousemove
lub inna świadcząca o działaniu prawdziwego człowieka.
Liczenie po IP to dziś już słaby pomysł bo za jednym IP w sieciach komórkowych może być cała dzielnica.
4w0rX4t4X napisał(a):
lepiej żeby to strona sama "zgłaszała obecność" do serwera
Poproszę o informacje, jak to działa, jak to się nazywa. O takim czymś nie słyszałem i trudno mi wyobrazić sobie, jak to miałoby działać. To serwer wydaje stronę za żądanie klienta i już w tym momencie ma informację, że jest kolejne połączenie, wg dostępnych danych o informacji można ustalić, czy to połączenie liczy się jako kolejny unikalny użytkownik. Nie rozumiem, co miałby zgłaszać skrypt na stronie i w jakim celu do serwera, który właśnie wydał tą stronę. Chyba, że dodatkowe informacje, jak fingerprint, żeby stwierdzić, czy to połączenie się liczy, a nie jest możliwe przekazanie fingerprint w żądaniu. Jak się szuka liczników, to zdecydowanie częściej są gotowe skrypty i gotowe usługi niż opis sposobów zliczania odwiedzin, a zwłaszcza unikalnych odwiedzin.
@4w0rX4t4X , @andrzejlisek dzięki za odpowiedzi
@4w0rX4t4X , to co piszesz ma jak najbardziej sens. Wiesz może czy istnieje jakieś gotowe rozwiązanie w PHP, które integruje się z fingerprintJS?
andrzejlisek napisał(a):
Poproszę o informacje, jak to działa, jak to się nazywa. O takim czymś nie słyszałem i trudno mi wyobrazić sobie, jak to miałoby działać.
Np. takie Google Analytics jest odpalane jako JavaScript po stronie klienta i komunikuje się z API Goggle, API TagManagera.
To serwer wydaje stronę za żądanie klienta i już w tym momencie ma informację, że jest kolejne połączenie, wg dostępnych danych o informacji można ustalić, czy to połączenie liczy się jako kolejny unikalny użytkownik.
Tylko, że po stronie klienta w JavaScript tych informacji możesz mieć wiele więcej i lepiej nimi sterować. Po stronie serwera nie wykryjesz nawet czy masz wejście robota czy faktycznego użytkownika.
Nie rozumiem, co miałby zgłaszać skrypt na stronie i w jakim celu do serwera, który właśnie wydał tą stronę.
No to się nad tym zastanów bo w praktyce ma to więcej sensu niż analiza tego co dostaniesz w nagłówku HTTP.
Chyba, że dodatkowe informacje, jak fingerprint, żeby stwierdzić, czy to połączenie się liczy, a nie jest możliwe przekazanie fingerprint w żądaniu. Jak się szuka liczników, to zdecydowanie częściej są gotowe skrypty i gotowe usługi niż opis sposobów zliczania odwiedzin, a zwłaszcza unikalnych odwiedzin.
Tak są. Jedne lepsze drugie gorsze - te po stronie serwera zwykle są tymi gorszymi bo zliczają wszystko jak leci bez szczególnych możliwości odfiltrowania śmieci. Dziś każdy robot skanujący strony potrafi symulować dowolną przeglądarkę a często takie skanowanie odbywa się z wielu adresów IP a w każdym żądaniu przedstawiają się Twojemu serwerowi inaczej - czasem trudno w ogóle wyłapać, że ktoś Cię crawluje a co dopiero budować tak licznik "odwiedzin". Oczywiście - to też są "odwiedziny" ale ja w domyśle mam licznik zliczający użytkowników a nie roboty.
Najlepiej ciastko, plus ciastka jest taki że odpada całkowicie problem przechowywania widzianych użytkowników w sensie IP/fingerprintów. Jak strona jest popularna to liczeni wielokrotnie użytkownicy z wyłączonymi cookies których jest bardzo mało nie zaburzą zbyt mocno statystyk. Zresztą można też sprawdzać czy przyjmują jakiekolwiek ciasteczka.