Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Userzy online
Forum PHP.pl > Forum > Przedszkole
swój nick
Jest problem: Mam stronkę na której userzy się logują i wykonują różne ciekawe czynności. Chcę by wyświetlało na dole ilu jest zalogowanych i którzy to są.
Do tej pory w bazie MySQL dodałem rubrykę (online) która zawierała wartość 1 gdy użytkownik się zalogował i zmieniała na 0 gdy się wylogował. Problem w tym, że jak zamknął przeglądarkę to zmienna zaostawała ustawiona na 1 i mimo, że go nie było, i tak wyświetlało że jest. Jak to poprawić w jakiś prosty sposób?

P.S gdzie znajde wyjaśnienie sposobu działania tych kodów które trzeba wpisywać przy zakładaniu tematu, bym mógł sobie takie coś dodać na swoją stronkę?

P.P.S użytkowników trzymam w jednej tabelce mysql, i uzywam kilku kont z MySQL o róznych uprawienieach by zarządzać danymi. Czy jest to najlepsze rozwiązanie czy też lepiej tworzyć każdemu userowi własne konto ... alboco tongue.gif
Trojan
Zamiast jedynki podawaj tam aktualny czas time" title="Zobacz w manualu PHP" target="_manual Niech będzie uaktualniany zawsze gdy user wykona jakąś czynność. Jeżeli czas w bazie będzie różnił się od aktualnego powiedzmy o 10min znaczy ze dany user jest offline
ferrero2
hehe smile.gif

dziś już to opisywałem z dokłądnymi skryptami :

sprawdź :

http://forum.php.pl/PHPMYSQL_Jak_zliczyc_c...ka_t100833.html
swój nick
Dzięki, zdecyduję się na taki wariant: Tabelka z kolumnami: username, usertype, lastaction - po każdym przeładowaniu strony bede odświerzał tabelkę i usuwał użytkowników nieaktywnych przez 10 min. logowanie dodaje użytkownika do tabelki a wylogowanie usuwa.
A co z osobami nie posiadającymi konta? Na różnych stronkach można spotkać napis: "aktywni: 5 zarejestrowanych, 3 gości" jak liczyć gości?
Tak samo tylko do tabelki dodać IP? Jest może lepszy sposób?
Kicok
A może coś takiego:
Kod
+-----------+-----------+---------------+
|  sess_ID  |  user_ID  |  last_action  |
+-----------+-----------+---------------+
|  abfd332  |     1     |    123456789  |
|  234dda2  |     34    |    123450000  |
|  ccf021a  |    NULL   |    123478787  |


sess_ID - CHAR/VARCHAR, klucz podstawowy, nie auto_increment, przechowujesz tutaj ID sesji (session_id" title="Zobacz w manualu PHP" target="_manual)
user_ID - INT, może być NULL, przechowujesz tutaj ID zalogowanego użytkownika lub NULL jeśli nie jest zalogowany (jest gościem)
last_action - TIMESTAMP, DEFAULT CURRENT_TIMESTAMP, przechowujesz tutaj czas ostatniej akcji zapisany pod postacią timestampa. Przy każdej aktualizacji rekordu pole to automatycznie przyjmie bieżącą datę


Dodawanie nowego gościa/wylogowanie zalogowanego użytkownika:
  1. REPLACE tabela SET sess_id = '123abcfd2', user_id = NULL

Logowanie użytkownika:
  1. REPLACE tabela SET sess_id = '123abcfd2', user_id = 12345

Usuwanie starych wpisów
  1. DELETE FROM tabela WHERE last_action < '2008-08-19 16:33:40' -- aktualna data - 10 minut

Liczenie gości na stronie:
  1. SELECT user_id IS NOT NULL AS zalogowany, COUNT( sess_id ) AS ile
  2. FROM online GROUP BY zalogowany
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.