![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 82 Pomógł: 1 Dołączył: 19.10.2011 Ostrzeżenie: (0%)
|
Mam do Was pytanie, jak, tak w teorii rzecz jasna sprawdzić czy użytkownik jest online? Domyślam się, że coś z pętla i bazą danych, ale to by było bardzo "interneto-ssące". Jak takie coś uczynić?
|
|
|
|
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 565 Pomógł: 15 Dołączył: 11.10.2010 Ostrzeżenie: (20%)
|
Gdy użytkownik się loguje to w tabelce "logged" daj 1, a gdy się wylogowuje aktualizujesz na 0 (IMG:style_emoticons/default/wink.gif)
|
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 82 Pomógł: 1 Dołączył: 19.10.2011 Ostrzeżenie: (0%)
|
A gdy sesja sama się skończy? Tzw. wyjdzie ze strony, ale zalogowany będzie, aż do czasu, gdy się nie skończy sesja, i wtedy będzie pseudo online, przez cały czas, nie prawdasz?
Ten post edytował Maxie 30.06.2012, 21:28:07 |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 133 Pomógł: 8 Dołączył: 23.09.2011 Skąd: Stromiec Ostrzeżenie: (0%)
|
Przy każdym załadowaniu strony wylogowywuj tych którzy mają czas ostatniej akcji większy niż np. 10 minut, a przy każdej akcji zapisuj czas kiedy ona nastąpiła, i id usera albo sesje
Ten post edytował CTRL 30.06.2012, 21:31:18 |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 59 Pomógł: 6 Dołączył: 28.10.2009 Skąd: że znowu... Ostrzeżenie: (0%)
|
Ja robię to tak że zapisuję czas ostatniej "aktywności" w serwisie.
Na każdej podstronie sprawdzam aktywność użytkownika, razem ze skryptem sprawdzającym sesje użytkownika czy nie wygasła. Mam taki system na kilku serwisach i działa wszedzie bez problemów i nie jest zbyt zasoobożerne. Gdy ostatnia aktywność użytkownika jest starsza niż 5 minut, aktualizuję czas w bazie danych na teraźniejszy. Na stronie wyświetlam użytkowników którzy byli aktywni w ciągu ostatnich 5 minut. Czas można ustawiać według własnych zasad, u mnie 5 minut jest wystarczające. ------- Automatycznego wylogowania nie polecam, każdy użytkownik może odejść na chwilę od komputera, podejdzie i zostanie wylogowany? Skoro sesja nadal jest aktywna to niech aktualizuje czas, a nie wylogowywuje go. Ten post edytował Natalka 30.06.2012, 21:32:52 |
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 565 Pomógł: 15 Dołączył: 11.10.2010 Ostrzeżenie: (20%)
|
No to napisz skrypt, że może być zalogowanym tylko przez 3600 sekund, gdy wartość jest większa to automatycznie przenosi do strony, gdzie ma nastąpić wylogowanie.
A potem w jQuery możesz to sprawdzać. |
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 1 195 Pomógł: 109 Dołączył: 3.11.2011 Ostrzeżenie: (10%)
|
A nie wystarczy użyć metody Session.autoRegenerate?Jeśli użytkownik nie będzie aktywny to sesja sama wygaśnie po tym można zrobić autowylogowanie.Jeśli użytkownik bedzie aktywny to sesja nie ulegnie przedawnieniu.
|
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 565 Pomógł: 15 Dołączył: 11.10.2010 Ostrzeżenie: (20%)
|
A nie wystarczy użyć metody Session.autoRegenerate?Jeśli użytkownik nie będzie aktywny to sesja sama wygaśnie po tym można zrobić autowylogowanie.Jeśli użytkownik bedzie aktywny to sesja nie ulegnie przedawnieniu. Ale tutaj się wiąże użycie klasy CakePHP. A pewnie kolega wolałby coś własnego wykombinować (IMG:style_emoticons/default/snitch.gif) |
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 82 Pomógł: 1 Dołączył: 19.10.2011 Ostrzeżenie: (0%)
|
Session.autoRegenerate ? O co w tym chodzi, znaczy się jak to wykorzystać?
|
|
|
|
Post
#10
|
|
|
Grupa: Zarejestrowani Postów: 565 Pomógł: 15 Dołączył: 11.10.2010 Ostrzeżenie: (20%)
|
|
|
|
|
Post
#11
|
|
|
Grupa: Zarejestrowani Postów: 82 Pomógł: 1 Dołączył: 19.10.2011 Ostrzeżenie: (0%)
|
Myślę, że można by zrobić "migawkę" w javascripcie, która reloadowała by się co 5 sec przy czym by zmieniała w bazie offline / online jeżeli by było inaczej rzecz jasna, ale by było to zasobożerne, co o tym uważacie?
|
|
|
|
Post
#12
|
|
|
Grupa: Zarejestrowani Postów: 133 Pomógł: 8 Dołączył: 23.09.2011 Skąd: Stromiec Ostrzeżenie: (0%)
|
Myślimy o tym to, żebyś robił to nie co 5 sekund tylko co minutę. Albo więcej.
|
|
|
|
Post
#13
|
|
|
Grupa: Zarejestrowani Postów: 565 Pomógł: 15 Dołączył: 11.10.2010 Ostrzeżenie: (20%)
|
Zrób stronę, która sprawdza czy od zalogowania nie minęło więcej niż 3600 sekund. Jeśli minęło to wylogowuje, a jeśli nie to po prostu pozostaje na stronie. Następnie w javascripcie przez funkcję setInterval sprawdzaj co 5000MS ową stronę.
|
|
|
|
Post
#14
|
|
|
Grupa: Zarejestrowani Postów: 82 Pomógł: 1 Dołączył: 19.10.2011 Ostrzeżenie: (0%)
|
A w tym przypadku, gdy ktoś będzie oglądał dłużej daną podstronę to wywali ;/ a nie chcę tak, chcę mieć rzetelną informację, czy ktoś jest w przeglądarce, na mojej stronie z włączoną sesją ;p
|
|
|
|
Post
#15
|
|
|
Grupa: Zarejestrowani Postów: 1 195 Pomógł: 109 Dołączył: 3.11.2011 Ostrzeżenie: (10%)
|
Cytat Session.autoRegenerate jest częścią frameworka CakePHP Dziwne, że tylko tam -opcja bardzo przydatna szczególnie w takich przypadkach. |
|
|
|
Post
#16
|
|
|
Grupa: Zarejestrowani Postów: 763 Pomógł: 117 Dołączył: 15.03.2010 Skąd: void Ostrzeżenie: (0%)
|
Pomysły macie w sam raz ale pozwólcie, że podzielę się swoim (IMG:style_emoticons/default/smile.gif)
Nie możesz zapisywać tylko wartości 0/1 w zależności od statusu, bo co jeśli zamknę przeglądarkę...? będę nadal dostępny. Najlepszym sposobem - skorzystaj z bazy danych (pliki odpadają z uwagi na szybkość zapisu i dostęp do danych), struktura: id|usr|time, id - A.I., usr - nick zalogowanego, time = wartość funkcji time(). Ok, masz już wszystko gotowe (IMG:style_emoticons/default/smile.gif) za każdym razem uruchamiaj taką funkcję (napisz ją sobie na podstawie tego co powiedziałem) i zapisuj WSZYSTKIE odświeżenia zalogowanych. Jeśli chodzi o wyświetlanie listy - zwykłe zapytanie z GROUP BY `usr` (IMG:style_emoticons/default/smile.gif) Aby nie zaśmiecać bazy ustaw również w początkowej funkcji odnajdowanie i usuwanie wyników nie spełniających kryteriów - np. ty chcesz jedynie ostatnie 5min, a w bazie masz także zapisy z ostatnich kilku godzin. (IMG:style_emoticons/default/smile.gif) Polecam również skorzystanie z zapytania TRUNCATE, chyba, że lubisz mieć id o długości 20 znaków po kilku dniach (IMG:style_emoticons/default/wink.gif) Pozdrawiam, pytaj jak czegoś nie wiesz (IMG:style_emoticons/default/smile.gif) |
|
|
|
Post
#17
|
|
|
Grupa: Zarejestrowani Postów: 377 Pomógł: 9 Dołączył: 2.11.2010 Ostrzeżenie: (0%)
|
Kiedyś ktoś mi polecił takie rozwiązanie:
Ale nie miałem szansy tego przetestować na dużą skale, (ten kod trzeba dać do każdego pliku). Ten post edytował Giluś 1.07.2012, 11:47:50 |
|
|
|
![]() ![]() |
|
Aktualny czas: 18.12.2025 - 14:44 |