Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Sesja - uzytkownicy odiedzajacy strone, jak kasowac uzytkownikow ktorzy zamykaja przegladarke
InosU31
post
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

Go to the top of the page
+Quote Post
Kszyhuu
post
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?
Go to the top of the page
+Quote Post
InosU31
post
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
Go to the top of the page
+Quote Post
Kszyhuu
post
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:
  1. DELETE FROM tabela WHERE czas_w_tabeli<(UNIX_TIMESTAMP() - 180)

Podłączonego do Crone'a np.

Ten post edytował Kszyhuu 22.03.2010, 00:08:34
Go to the top of the page
+Quote Post
CyberDuck_
post
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.
Go to the top of the page
+Quote Post
InosU31
post
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
Go to the top of the page
+Quote Post
CyberDuck_
post
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 ...
Go to the top of the page
+Quote Post
Majzel
post
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?
Go to the top of the page
+Quote Post
thek
post
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.
Go to the top of the page
+Quote Post
CyberDuck_
post
Post #10





Grupa: Zarejestrowani
Postów: 135
Pomógł: 15
Dołączył: 17.08.2009

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 13:10