Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Licznik zalogowanych użytkowników..., ...jak to ugryźć?
missile
post
Post #1





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 12.11.2005
Skąd: hen hen

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


Witam.
Napisałem skrypt zliczający użytkowników online oraz wyświetlający tych zalogowanych, korzysta on z bazy danych MySQL i oparty jest o sesje i ip. Skrypt działa poprawnie, wszystko wyświetla się tak jak potrzeba, jednak problem pojawił się gdy zacząłem sprawdzać dziwne działania użytkowników, czy to przypadkowe, czy wykonane z premedytacją. Chodzi głównie o obsługę cookies i związane z nim autoryzowanie użytkownika. W momencie wyłączenia obsługi cookies i/lub usunięcie ciasteczka nie mam dostępu do zmiennych sesyjnych a tym samym nie mogę usunąć rekordu zalogowanego użytkownika z tabeli.
Wiem istnieje możliwość przesyłania identyfikatora sesji metodą GET ale chcę tego uniknąć jest też pole ukryte w formaularzu ale wtedy bez JS się nie obejdzie.
Powiem krótko chodzi mi o taki mechanizm jaki działa na tym forum tzn. jeżeli wyłącze obsługę cookies to automatycznie mój nick nie jest już wyświetlany...

Z góry wielkie dzięki za, choćby najmniejszą, wskazówkę (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
bim2
post
Post #2





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


Zalezy jak dales to online users. ja np dalem ze dodaje sie do tabeli kto kiedy dodal sie wpis i nick usera. Jesli wpis dodal sie wiecej niz 100sec to user nie jest na stronie (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) , wiec problem z glowy (tak masz w phpbb)
Go to the top of the page
+Quote Post
missile
post
Post #3





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 12.11.2005
Skąd: hen hen

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


To wiem, jednak jeśli użytkownik wyłączy obsługę cookies to w Twoim przypadku jego login nadal będzie wyświetlany przez 100 sekund, bo nie masz już loginu użytkownika, związanego z identyfikatorem sesji zawartym w ciachu, aby usunąć odpowiedni rekord z tabeli...

pzdr
Go to the top of the page
+Quote Post
eai
post
Post #4





Grupa: Zarejestrowani
Postów: 367
Pomógł: 10
Dołączył: 20.05.2005

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


Tabela uzytkownikow on-line
Kod
USER_ID | START_TIME
* START_TIME = time();
* $END_TIME = 200
                       w sekundach




I teraz tak piszesz funkcje np odswiez_user(); która robi UPDATE tabeli za kazdym razem jak uzytkownik wykona jakas akcje na stronie np. kliknie w jakis link itp.
I piszesz druga funkcje np delete_user(); która będzie usuwała nieaktywnych userów [ if (START_TIME + $END_TIME < time()) { DELTE ... } ].

plik index.php
  1. <?php
  2.  
  3. odswiez_user();
  4. delete_user();
  5.  
  6. ?>
Go to the top of the page
+Quote Post
missile
post
Post #5





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 12.11.2005
Skąd: hen hen

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


A jeśli użytkownik wyłączy obsługę cookies w trakcie gdy jest zalogowany, nie będę miał dostępu do zmiennej $_SESSION['UserId'] nawet jeśli użyję opcji use_trans_sid to przydzieli ona nowy identyfikator sesji a uzytkownik zostanie wylogowany, co za tym jego login nadal będzie wyświetlany w tym przypadku przez 200 sekund.
Chodzi mi o natychmiastowe usunięcie jego loginu, gdy użytkownik usunie cookies i np. odświeży stronę lub przejdzie do innej, a nie po jakimś czasie...

pzdr
Go to the top of the page
+Quote Post
nexis
post
Post #6





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

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


Piszesz o dwóch różnych rzeczach:

- użytkownik wyłączy obsługę ciasteczek
- użytkownik usunie ciasteczko

Którą z nich masz na myśli?
Go to the top of the page
+Quote Post
missile
post
Post #7





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 12.11.2005
Skąd: hen hen

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


Wiem do czego zmierzasz. Jeśli tylko wyłącze akceptację cookies to wszystkie ciasteczka pozostaną. Wtedy w przypadku ponownego włączenia tej akceptacji zostanę automatycznie zalogowany. Jeśli usunę ciasteczko takiej możliwości już nie będzie. Jedno pozostaje niezmienione, w obydwu przypadkach użytkownik zostanie wylogowany, ponieważ albo niema dostępu do identyfikatora sesji w cookies albo nie ma wogóle tego cookies.
Jednak w obydwu przypadkach login/id użytkownika powinny zostać usunięte z tabeli users_online gdyż jest on nie zalogowany. Pytanie: jak to zrobić gdy nie ma tego identyfikatora sesji? Napewno jest to możliwe, gdyż działa na Tym forum... (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

pzdr

-----------

Ciekawi mnie czy rozwiązanie tego problemu tkwi w zastosowaniu jakiejś funkcji php czy też chodzi o założenia przy tworzeniu skryptu, a więc kwestie logiczne...

-----------

Hmm, widzę że nikt nie ma pomysłu. W każdym razie dzięki za pomoc

pzdr

Ten post edytował missile 11.04.2006, 13:25:57
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: 19.09.2025 - 14:04