![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 221 Pomógł: 14 Dołączył: 11.03.2009 Skąd: Lubaczów Ostrzeżenie: (0%) ![]() ![]() |
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 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 157 Pomógł: 32 Dołączył: 24.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Jaki jest sens zapisywania do bazy osób, które aktualnie przeglądają stronę i kasowanie rekordów w momencie opuszczenia jej?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 221 Pomógł: 14 Dołączył: 11.03.2009 Skąd: Lubaczów Ostrzeżenie: (0%) ![]() ![]() |
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 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 157 Pomógł: 32 Dołączył: 24.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
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:
Podłączonego do Crone'a np. Ten post edytował Kszyhuu 22.03.2010, 00:08:34 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 135 Pomógł: 15 Dołączył: 17.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
A niby jak to ma zrobic na tej samej stronie otwieranej w roznych
przegladarkach na roznych komputerach ? (IMG:style_emoticons/default/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. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 221 Pomógł: 14 Dołączył: 11.03.2009 Skąd: Lubaczów Ostrzeżenie: (0%) ![]() ![]() |
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 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 135 Pomógł: 15 Dołączył: 17.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
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 ... |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 110 Pomógł: 0 Dołączył: 3.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
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? |
|
|
![]()
Post
#9
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Jak? No cóż... Chyba to oznacza, że korzysta ze strony/serwera i wywołuje z niej coś (IMG:style_emoticons/default/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.
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 135 Pomógł: 15 Dołączył: 17.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
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. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 13:10 |