Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL]Userzy online, Jak sprawdzić czy użytkownik się zalogował?
-swój nick-
post
Post #1





Goście







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
Go to the top of the page
+Quote Post
Trojan
post
Post #2





Grupa: Zarejestrowani
Postów: 53
Pomógł: 10
Dołączył: 17.01.2008

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


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
Go to the top of the page
+Quote Post
ferrero2
post
Post #3





Grupa: Zarejestrowani
Postów: 171
Pomógł: 32
Dołączył: 5.08.2008
Skąd: Lublin

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


hehe smile.gif

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

sprawdź :

http://forum.php.pl/PHPMYSQL_Jak_zliczyc_c...ka_t100833.html

Ten post edytował ferrero2 19.08.2008, 12:58:32


--------------------
---------------------------
"Jeżeli trzeci dzień z rzędu nie chce Ci się pracować tzn że dziś jest ŚRODA !
Algorytmy , Programowanie , Tworzenie WWW - SPRAWDŹ
Go to the top of the page
+Quote Post
-swój nick-
post
Post #4





Goście







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?
Go to the top of the page
+Quote Post
Kicok
post
Post #5





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


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


Ten post edytował Kicok 19.08.2008, 15:45:50


--------------------
"Sumienie mam czyste, bo nieużywane."
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 18:46