![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 329 Pomógł: 6 Dołączył: 23.11.2011 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Ostatnio zastanawiałem się jak zrobić pokazywanie użytkowników online. Myślałem nad sposobem zapisywania do bazy nazw użytkownika a przy wylogowywaniu się usuwaniu lecz nigdy nie jest tak łatwo ![]() Patrzyłem już po rożnych tematach na tym forum ale nic nie naprowadziło mnie jak to zrobić. A więc proszę o pomoc. Nazwę użytkownika przechowuję pod $_SESSION['login'] - to jest proste a jak przechować wszystkich zalogowanych? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Opiekunowie Postów: 3 855 Pomógł: 317 Dołączył: 4.01.2005 Skąd: że ![]() |
Używaj opcji SZUKAJ. Wczoraj był taki temat.
-------------------- Jak poprawnie zadać pytanie | Jak poprawnie zatytułować wątek
Najczęstsze błędy | Błędy E_NOTICE | PHP FAQ | FAQ PHPedia | SQL-Injection | Logowanie i sesje | Hashowanie haseł | Server - od czego zacząć ? | Manual PHP Alternatywne Forum dla Ekspertów Nie pomagam na PW, nie mam GG |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Witaj.
Jest prosty i edukacyjny sposób (nie super wydajny): Możesz utworzyć dodatkową tabele, w której będziesz przechowywał info o użytkownikach online na stronie. Tabela taka powinna mieć strukturę (przykładowo): id_user ip last_activity Z unikalnych kluczem (jednym) na polach id_user+ip id_user - przechowywało by wartość 0 (dla niezalogowanych) oraz id uzytkownika jeśli jest zalogowany last_activity - timestamp po którym okreslalibyśmy czy danego użytkownika uznać za obecnego czy nie ip - tylko po to by rozróżniać po sobie użytkowników niezalogowanych i tak: Po wejściu na kazdą stronę powinien być do tej tabelki insert na zasadzie:
To zapytanie doda wiersz dla danego usera jak go nie ma albo zaktualizuje czas ostatniej aktywności. Jak teraz odczytać dane:
Masz już listę użytkowników, którzy coś zrobili w przęciągu ostatnich 2 minut (wartość tą można zmienić) usuwanie niepotrzebnych rekordów można zrobić raz na jakiś czas poprzez usunięcie rekodrów gdzie czas jest starszy od 2 minut Pamietać trzeba że w tym sposobie przy zalogowaniu uzytkownika należy zaktualizować rekord z jego IP jak był niezalogowany - inaczej będzie 2 userów a nie jeden. W bardziej zaawansowanych skryptach/szkieletach w bazie zapisywane są często różne dane bieżące o sesji użytkownika - w takich przypadkach nie ma problemu z określeniem liczby userów online itd... -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 329 Pomógł: 6 Dołączył: 23.11.2011 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Ok, prawie wszystko rozumiem ale...
last_activity - tego nie rozumiem można bardziej po polsku? - timestamp nie znam tej funkcji id - po co? nie rozumiem
ok czyli to przychwyca czy user wykonał czynność czy też nie tak? Czyli np jak dam do to pliku z logo. (On jest wszędzie odczytane poprzez include() to będzie dobrze? Ten post edytował GoOx 1.02.2012, 09:12:41 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Może być.
last_activity - pole, które będzie przechowywać dokładny czas ostatniej aktywności użytkownika.. Jesli ten czas będzie o 2 minuty (lub tyle ile ustawisz) starszy od obecnego to traktuje się uzytkownika za nieobecnego (bo przez 2 minuty nic nie robił) id_user - masz użytkowników zalogowanych i niezalogowanych zalogowani mają jakieś swoje ID, a niezalogowani nie Zatem tym niezalogowanym dajesz 0 a tym zalogowanych ich ID - w ten sposób wiesz że na stronie jest na przykład: 25 gości 3 użytkowników: - stefan - mariolka - kazik Bo możesz rozpoznać kto jest kim ![]() -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 329 Pomógł: 6 Dołączył: 23.11.2011 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Ok,
a więc zrobiłem tak:
i odczyt:
potem daję echo i nie pokazuje mi userów online. Proszę o pomoc. |
|
|
![]()
Post
#7
|
|
![]() Grupa: Opiekunowie Postów: 3 855 Pomógł: 317 Dołączył: 4.01.2005 Skąd: że ![]() |
Zobacz kod z linka, który podałem.
-------------------- Jak poprawnie zadać pytanie | Jak poprawnie zatytułować wątek
Najczęstsze błędy | Błędy E_NOTICE | PHP FAQ | FAQ PHPedia | SQL-Injection | Logowanie i sesje | Hashowanie haseł | Server - od czego zacząć ? | Manual PHP Alternatywne Forum dla Ekspertów Nie pomagam na PW, nie mam GG |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 329 Pomógł: 6 Dołączył: 23.11.2011 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
a nie przepraszam działa. Myślałem że użytkownik online od razu sie pokaże a on rónież po 2 min.
A nie da się tak zrobić by użytkownik przy zalogowaniu od razu się pokazywał a przy czynnościach czekał 2 min? a i jeszcze jedno. Nie pokazuje listy online tylko 1 usera online czy tam nie trzeba zrobić pętli? Ten post edytował GoOx 1.02.2012, 09:59:25 |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Trzeba bo tam jest wielu userów więc do WHILE'a i tyle
EDIT: Jeśli zapoznałbyś się z event schedulerem, tworzeniem eventów i procedurami w MySQL to można by to było fajnie rozwinąć Ten post edytował Sephirus 1.02.2012, 10:43:13 -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 2 355 Pomógł: 533 Dołączył: 15.01.2010 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Ja bym jeszcze dodał tam kolumnę `online`, wtedy będziesz mógł sobie określać, że przy zalogowaniu masz od razu '1', a przy wylogowaniu '0'. No i w bazie danych to przejrzyście wygląda.
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 329 Pomógł: 6 Dołączył: 23.11.2011 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Damonsson dobry pomysł.
zrobiłem tak że w tabeli użytkownicy user ma w kolumnie online 1 i czas jest 2 minuty w 2 strony to powinno pokazywać użytkownika w liście. a zamiast tworzyć bardzo dużo rekordów to zrobiłem update
to działa.
ale to już nie ;/ Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/recenzeo/public_html/footer.php on line 27 mam taki błąd. Pomoże ktoś? Ehh ja chyba ślepy jestem ![]() Ten post edytował GoOx 1.02.2012, 11:36:00 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 04:27 |