Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Sesja - uzytkownicy odiedzajacy strone
Forum PHP.pl > Forum > Przedszkole
InosU31
Witam

Robie sobie statystyki odwiedzajacych strone. Mam 3 tabelki, w jednej zapisuje gosci z ich IP, przegladarka, iloscia wejsc i ostatnia date wejscia

druga tabelka zawiera id goscia i date wejscia

trzecia zawiera id goscia - w tej tabeli maja byc zapisane tylko id gosci ktorzy aktualnie odwiedzaja strone.

Chcialbym zrobic tak ze w momecie gdy dany gosc opusci strone - zamknie przegladarke - wpis w 3 tabelce z jego id zostaje wykasowany. Zrobilem sobie zmienna sesyjna $_SESSION['gosc'] w ktorej zapisuje id goscia niestety ta zmienna sesyjna zmienia wartosc za kazdym razem gdy na strone wejdzie inna osoba.

Niestety nie mam pojecia jak wykasowac goscia ktory nie odwiedza aktualnie strony. Moglby mi ktos podpowiedziec jak sie z tym uporac? Bylbym wdzieczny.

pozdrawiam

Kszyhuu
Jaki jest sens zapisywania do bazy osób, które aktualnie przeglądają stronę i kasowanie rekordów w momencie opuszczenia jej?
InosU31
a taki ze bede zliczal sobie osoby ktore aktualnie przegladaja strone i wyswietlal wynik. no chyba ze mozna jakos inaczej obliczyc te osoby i wyswietlic ilosc - jesli tak to prosze o podpowiedz

pozdrawiam
Kszyhuu
Możesz np wrzucić wszystkich do tablicy i zsumować tylko liczbę elementów tejże tablicy poprzez funkcję count().

Edit down: Ano fakt, mój błąd. W takim razie, jak mówisz, timestamp i coś w rodzaju:
  1. DELETE FROM tabela WHERE czas_w_tabeli<(UNIX_TIMESTAMP() - 180)

Podłączonego do Crone'a np.
CyberDuck_
A niby jak to ma zrobic na tej samej stronie otwieranej w roznych
przegladarkach na roznych komputerach ? blinksmiley.gif
Musi zapisac te dane w bazie. Mozesz zapisywac date np przy
pomocy timestamp. Powiedzmy jednym zapytanie usuwac
przedawnione wpisy. Czyli dajmy na to jesli juz minelo 180 sek.
Reszte juz pewnie wiesz.
InosU31
po dacie to nie za bardzo moge bo kto wie ile gosc bedzie siedzial na stronie moze nawet miec i z 2 godziny otwarta przegladarke. Chodzi mi bardziej o to ze jak sesja goscia wygasnie to zostaje usuniety wpis z tabeli tylko nie wiem jak to zrobic zeby uworzyc warunek ktory:

jesli sesja goscia o ip jakims juz nie istnieje ma go wykasowac.

a jak wy wyswietlacie userow ktorzy sa aktualnie zalogowani ? - moze to cos pomoze;-)

pozdrawiam
CyberDuck_
Za kazdym kliknieciem kiedy wchodzi na jakas podstrone
odswierzasz wpis w tabeli. Mozesz to zrobic na kilka sposobow.
Mozesz rozpoznawac go po adresie IP, ale to jest malo wygodne
bo moze sie zdazyc, ze z jednej sieci moze wejsc na strone
dwoch roznych uzytkownikow i wtedy tych dwoch uzytkownikow
bedzie rozpoznawane jako jeden. Mozesz oczywiscie po sesji
go rozpoznawac, ale to bardzo skomplikuje kod. Moim zdaniem
mozesz ustalic sobie jakas zmienna w ciaskach albo sesji typu
$_SESSION[] i do niej ladowac jakis numer np na podstawie
mktime() . Czyli jesli uzytkownik wchodzi dopiero na strone
to ta zmienna jest pusta wiec ten fakt sprawdzasz ... Jesli
zmienna jest pusta to nadajesz mu numer ID do tej zmiennej
i na jej podstawie mozesz odswierzac wpis w bazie danych.
Za kazdym kliknieciem notujesz czas wejscia. Jesli przestaje
klikac w kolejne podstrony czy artykuly to mozna przyjac po
np 180 sekundach, ze juz go nie ma na stronie ...
Majzel
Cytat
Jesli przestaje
klikac w kolejne podstrony czy artykuly to mozna przyjac po
np 180 sekundach, ze juz go nie ma na stronie ...


A jak można to zrobić? Jak sprawdzić czy użytkownik klika w kolejne podstrony/artykuły?
thek
Jak? No cóż... Chyba to oznacza, że korzysta ze strony/serwera i wywołuje z niej coś winksmiley.jpg Jeśli ustalisz kto to (ciastka/sesja/ip/zmienna $_SERVER lub kombinacje powyższych i inne cuda wianki) to zwiększasz "czas życia" w bazie dla rekordu owego usera i oznaczasz jako "aktywny". Każde przejście, każda akcja to będą robiły.
CyberDuck_
Cytat(Majzel @ 22.03.2010, 10:05:04 ) *
A jak można to zrobić? Jak sprawdzić czy użytkownik klika w kolejne podstrony/artykuły?

Jak to jak ? Masz strone podzielona na bloki ? Jest wsrod nich taki, ktory ladujesz na
kazdej podstronie ? Dajmy na to niech to bedzie 'header.php' wiec w
tym pliku robisz wlasnie taka stal procedurke, ktora :
sprawdza czy juz np zmienna $_SESSION['wszedl'] jest pusta.
Jesli nie jest pusta to mozna od razu zrobic update wpisu w bazie o tym numerze
ID czasu odswierzenia strony, mozna sie pokusic nawet o zanotowanie jaka to jest
podstrona, IP uzytkownika ... co tylko chcesz.
Jesli zmienna byla pusta to robisz nowy wpis do bazy z podobnymi danymi.
Nastepne zapytanie to kasacja wszystkich wpisow, ktore maja juz wiecej
niz 180 sekund. Moze to byc dowolny inny czas jaki ustalisz.
Czyli robisz zapytanie do bazy czy pole bazy jest mniejsze od time() - 180, a jesli
tak to skasowanie tych wierszy, ktore spelniaja ten warunek.
W ten sposob zostaja Ci sie tylko wpisy uzytkownikow, ktorzy w ciagu
tego zalozonego czasu odwiedzali lub odwiedzaja wlasnie strone.
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.