PHP - licznik osób on-line - MySQLi
| DZIAŁANIE: | brak działania |
Kod:

Ewentualne Objaśnienia:
Oto przykład na zrobienie licznika osób on-line - z wykluczeniem odwołań z tego samego IP (chociaż możliwe jest, że z tego samego IP na stronie są inne osoby) oparty o bazę danych. Do obsługi bazy wykorzystałem moduł mysqli - przypominam dostępny w PHP 5 oraz MySQL wersji 4.1 lub wyższej.
Działanie jest bardzo proste zobaczmy :
- do zmiennej $regulacja ustawiamy czas (sekundy) po jakim dane będą usuwane z
bazy danych - dane o osobach na stronie, ponieważ baza będzie pamiętać IP osoby
oraz znacznik czasu - tzn. kiedy ta osoba pojawiła się na stronie. Jeżeli na
stronę wejdzie ktoś inny - informacje o osobach, które były na niej 120sekund
wcześniej zostają skasowane - rzecz jasna zmienną tą możemy zmieniać
- łączymy się z bazą MySQL i wpisujemy dane osoby, która właśnie weszła czyli IP
oraz obecny czas (znacznik uzyskany funkcją time)
- usuwamy z bazy danych wpisy starsze niż "120 sekund temu" - w bazie może być
wiele identycznych wpisów na przykład jeśli ktoś odświeża no to ponownie są
wpisywane jego takie same dane, jednak dalej jak widzicie będzie jego "osoba
liczona jako jedna", później po czasie 120 sekund dane te są usuwane
- po usunięciu nieaktualnych wpisów obliczamy ile jest osób na stronie -
pobieramy z bazy wpisy, ale dzięki DISTINCT jedynie "pojedynczo" , powtarzające
wartości są uwzględniane jako 1 element dlatego, żeby osoby z tego samego IP nie
policzyć kilka razy rzecz jasna
- funkcja zwraca liczbę odczytanych rekordów, czyli liczbę osób on-line. Jeżeli
wcześniej doszło do jakiegoś błędu funkcja zwracałą false
- wywołujemy naszą funkcję, jeżeli zwraca 1 piszemy, że jest 1 user on-line,
jeżeli inną wartość wypisujemy ją, a jeśli zwraca false informujemy o błędzie
Aby przykład działał w bazie należy utworzyć odpowiednią tabelę u mnie nazywa się ona licznik_online oraz dla niej dwa pola : czas oraz ip .