[ PHP & MYSQL ] Licznik oparty o bazę danych

0

Witam...

Mam maly problem. Chce napisac skrypt 'Lczinik' oparty na bazie danych. Licznik ten bedzie pokazywal:

  • Ilosc Wszystkich Odwiedzin
  • Ilosc Odwiedzin w dniu, ktory jest aktualnie
  • Ilosc Odwiedzin Przez Ostani Tydzien
  • Ilosc Odwiedzin Przez Ostani Miesiac
  • Ilosc Odwiedzin Przez Ostatni Rok

Potrzebowalbym pomocy w ustaleniu na jakiej zasadzie mialoby byc zapamietywanie i porownywanie kolejnych odwiedzin, nie mam tez pojecia jak ma wygladac tabela w bazie danych.

A drugie to chcialbym sie poradzic czy lepiej zrobic licznik na sesji z 'blokada odswiezania' czy taki ktory bedzie porownywal dane IP i Host i jezeli nie bylo zwiekszenia licznika dla pobranego IP / Hosta w danym dniu to zwieksza go:>

Prosze o pomoc

0

Każde z tych rozwiązań ma swoje wady i zalety. Ale jeśli zamierzasz taki licznik umieścić na popularnej stronie, to cookie są jedynym rozwiązaniem - dość prosto je oszukać, ale tabela IP zabije Twoją bazę danych :).
Co do tabeli - prosta sprawa - trzy kolumny: id, date, count - zliczasz odwiedziny konkretnego dnia (UPDATE visits SET count = count + 1 WHERE date = 'TUTAJ DATA DZISIEJSZA') gdzie rzecz jasna "TUTAJ DATA DZISIEJSZA" zależy od tego, jaki format przyjmiesz. Dalej sprawdzanie ilości odwiedzin danego dnia, przez ostatni tydzień, miesiąc, rok, czy może 666 dni nie będzie żadnym problemem.

0
Adam.Pilorz napisał(a)

Każde z tych rozwiązań ma swoje wady i zalety. Ale jeśli zamierzasz taki licznik umieścić na popularnej stronie, to cookie są jedynym rozwiązaniem - dość prosto je oszukać, ale tabela IP zabije Twoją bazę danych :).

Skoro uwazasz ze baza danych z IP nie jest rozsadnym rozwiazaniem a Cookie latwo oszukac to co polecasz?

0

Nie ma rozwiązania idealnego.

Jedno zakłada przechowywanie wszystkich danych na serwerze (tutaj baza danych jest najlepsza), drugie - na komputerze klienta. Przy popularnych stronach baza danych z adresami IP jest zabójcza, bo może osiągnąć olbrzymie rozmiary, ponadto ma dodatkowe wady - zakładając, że sieć lokalna (przykładowo przedsiębiorstwo) będzie miała jeden adres IP i wewnątrz 200 komputerów (albo i więcej, może być nawet 16387064 rozrzuconych po całym świecie, ale w jednym VLANie), wówczas odwiedziny każdego z tych 200 klientów będą liczone jak jednego. Oczywiście te 16387064 to przekolorowanie, ale 200 to na prawdę mała sieć wewnętrzna.

Drugie rozwiązanie zakłada przechowywanie informacji po stronie klienta - proste, nie obciąża serwera, ale klient może dość prosto nabić statystyki (wystarczy czyszczenie ciasteczek, albo otwieranie chociażby kilku różnych przeglądarek - każda z nich będzie liczona jak unikalna wizyta). Jednocześnie rozwiązuje problem z LANami - każdy komputer jest liczony niezależnie, bez względu na to, czy ma zewnętrzny adres IP, czy może zmienia go 10 razy na minutę (wszak osoba z Neostradą nawet przy bazie IP może nabijać licznik wykorzystując możliwość zmiany adresu IP w każdej chwili). Jest to również bardziej wiarygodne pod warunkiem, że klient nie ma interesu w nabijaniu statystyk. W 99,9% przypadków nikt nie będzie czyścił ciastek tylko po to, by na jakiejś stronie pokazał się wyższy numerek w liczniku odwiedzin - jeśli licznik służy wyłącznie kwestii informacyjnej - jest to optymalne rozwiązanie.

To, co wybierzesz, zależy od Ciebie. Jeśli mowa o stronie pokroju Pajacyka, act4trees czy czegoś takiego - możesz rozważyć tabelę IP, aby użytkownicy nie nabijali sztucznie odwiedzin, jeśli licznik ma pełnić rolę informacyjną - szkoda zachodu, bo tylko popsuje wiarygodność, a nie polepszy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1