![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
witam
jak konkretnie zrealizowac sprawdzanie czy dany uzytkownik jest online? sesje zapisywane mam w bazie mysql, w sesji zapisuje ID uzytkownika po zalogowaniu. mam teraz sprawdzac wykonac zapytanie
? -------------------- aplikacje internetowe | Symfony
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Dla mnie czas ostatniej akcji nie jest częścią danych do zapisania w sesji, tylko normalnych danych o użytkowniku. Nie widzę powodu, żebyś się tak męczył.
edit: doczytałem dokładnie Twojego posta i w sumie nie wiem o co Tobie chodzi. Skoro w sesji masz tylko id usera, to znaczy, że to o czym pisałem wyżej jest poprawne. Po co tobie wyszukiwać to id w danych sesji? Ten post edytował LBO 17.08.2008, 13:03:04 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
zagadnienie jest znane w duzej ilosci serwisach spolecznosciowych.
obok informacji o profilu jest info czy jest w danej chwili zalogowany czy nie. temat byl juz poruszany na forum i z tego co pamietam to wlasnie robi sie to korzystajac z mechanizmu sesji w bazie danych. -------------------- aplikacje internetowe | Symfony
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
hę? Ja wiem o co chodzi, ale to wydaje mi się błędnym rozwiązaniem. Sypnij linkiem jakbyś mógł do Twojego sposobu.
A co powiesz na dodatkową kolumnę w tabeli użytkowników z czasem ostatniej akcji? Czyż nie byłoby łatwiej? |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
owszem, latwiej by bylo bo podczas logowania robie update na tabeli profil i juz. ale co jak user zamknie przegladarke?
trzeba by dodatkowe modyfikacje wprowadzac. nie wiem jak to robi klasa mysqlstoragesession - ale ona chyba automatycznie usuwa stare wiersze. chyba ze nie, wtedy to rozwiazanie tez nie jest za dobre;) wlasnie po to zalozylem ten temat zeby dowiedziec jak to zrealizowac w symfony. -------------------- aplikacje internetowe | Symfony
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Czekaj, czekaj - wróćmy do teorii. Byłem pewien, że nie można wykryć zamknięcia przeglądarki w PHP - ewentualnie w skryptach po stronie usera (ale to może być i JEST zawodne).
Moim zdaniem najlepiej się trzymać metody z dodatkową kolumną i czasem nieaktywności po którym użytkownik jest uznawany jako offline. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 243 Pomógł: 32 Dołączył: 14.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Zamknięcia przeglądarki nie da się wykryć, no chyba żeby podpiąć jakiegoś AJAXa pod zdarzenie onunload na stronie (nie sprawdzałem tego). Poza tym są jeszcze osoby które mają wyłączony JS, albo po prostu zostawią włączoną przeglądarkę np. na noc - na nich nic nie poradzisz. Osobiście proponuję uznać osobę za zalogowaną jeżeli wykonała jakąś akcję w ciągu ostatnich np. 10 minut, i dodatkowo jeszcze uwzględniać czy osoba się nie wylogowała.
-------------------- |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Nie używam Symfony, ale sprawdziłem jak działa ten adapter na bazę MySQL. Nie robi nic ciekawego niż zapisywanie czystych danych sesyjnych do bazy - nic więcej.
Mógłbyś opisać sposób do którego dążysz? edit: Zamknięcia przeglądarki nie da się wykryć, no chyba żeby podpiąć jakiegoś AJAXa pod zdarzenie onunload na stronie (nie sprawdzałem tego). Poza tym są jeszcze osoby które mają wyłączony JS, albo po prostu zostawią włączoną przeglądarkę np. na noc - na nich nic nie poradzisz. Osobiście proponuję uznać osobę za zalogowaną jeżeli wykonała jakąś akcję w ciągu ostatnich np. 10 minut, i dodatkowo jeszcze uwzględniać czy osoba się nie wylogowała. A o czym ja pisałem przez ostatnie kilka postów? |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
z ta kolumna to troche komplikuje - bo trzeba by aktualizowac w niej ta date ktora zostanie zapisane podczas logowania.
bo jak zrobie taki bajer w symfony ze sesja nigdy nie wygasa to co wtedy? wiec moj sposob z pierwszego posta tez jest zly bo bylo by ze caly czas jest online. czyli jak to rozwiazac, ale juz konkretnie prosze:) EDIT: no to olac sesje w bazie. to jak to inaczej zrobic? w kolumnie ostatnia_akcja w tabeli profil zapisywac date. ale kiedy? tylko podczas logowania to chyba za malo. Ten post edytował AxZx 17.08.2008, 13:54:03 -------------------- aplikacje internetowe | Symfony
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Przy każdym requeście zalogowanego użytkownika. Zwyczajnie dorób sobie to w sessionUser
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
aha, czyli jedno zapytanie wiecej. ale jedno mniej bo sesje wracaja do plikow:)
-------------------- aplikacje internetowe | Symfony
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Dokładnie
![]() Mam nadzieję, że --> POMOGŁEM <-- ![]() |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
tak, dziękuję bardzo.
a teraz pytanie już o samo Symfony mam
w konstruktorze chce sprawdzyc czy user jest zalogowany i jezeli tak to wykonac zapytanie aktualizujace date w kolumnie ostatnia_akcja. jak mam wykonac takie cos:
wyrzuca blad: Call to a member function isAuthenticated() on a non-object. jak mam to inaczej zrobic? zeby osiagnac to co LBO radzi. -------------------- aplikacje internetowe | Symfony
|
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Nie tu - zrób swojego sfUser i daj to w metodzie initialize()
edit: w konstruktorze nie ma jeszcze obiektu user - jest on dodawany już po tym (pewnie w metodzie initialize <albo startup, lub coś w ten deseń> - bazuje na podobieństwach z Agavi). Ten post edytował LBO 17.08.2008, 14:38:24 |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
dzieki, nie wiedzialem o tym initialize:)
a wracajac do tematu online/offline to to bedzie malo dokladne. w tej metodzie initialize bedzie aktualizowana za kazdym razem data w kolumnie ostatnia_akcja. wiec jak user kliknie wyloguj i zamknie przegladarke to juz co? data bedzie zapisana ta w ktorej wykonal akcje wyloguj. a na jego profilu bedzie dalej info ze jest zalogowany bo przyjalem ze 5 minut od daty z kolumny ostatnia_akcja. jak to z tym jest? dobrze mysle czy jakis sposob jest? moze wyzerowac kolumne ostatnia_akcja podczas akcji wylogowanie i sprawdzac czy nie jest pusta - jak jest pusta to znak ze offline. -------------------- aplikacje internetowe | Symfony
|
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Ja user zamknął przeglądarkę to nie sprawdzisz tego - niestety. Możesz to sprawdzić z przybliżoną dokładnością.
Co do implementacji:
Nie wiem jak to dokładnie działa w Symfony, jeżeli generuje ona sama klasę sessionUsera to znajdź ją i dopisz to co napisałem. |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
dokladnie tak zrobilem:)
mysle ze 3 minuty wystarczy. zreszta kto na to patrzy:) dziekuje bardzo. juz chyba wystarczy Ci 3 razy pomogl? ![]() -------------------- aplikacje internetowe | Symfony
|
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
a wracajac do tematu online/offline to to bedzie malo dokladne. w tej metodzie initialize bedzie aktualizowana za kazdym razem data w kolumnie ostatnia_akcja. wiec jak user kliknie wyloguj i zamknie przegladarke to juz co? data bedzie zapisana ta w ktorej wykonal akcje wyloguj. a na jego profilu bedzie dalej info ze jest zalogowany bo przyjalem ze 5 minut od daty z kolumny ostatnia_akcja. Tak, ale przy wylogowaniu możesz ustawić ten czas na 5 minut wstecz, ale nie przejmowałbym się tym zwyczajnie - skoro i tak wszystko jest w przybliżeniu. jak to z tym jest? dobrze mysle czy jakis sposob jest? moze wyzerowac kolumne ostatnia_akcja podczas akcji wylogowanie i sprawdzac czy nie jest pusta - jak jest pusta to znak ze offline. Pamiętaj, że nie zawsze użytkownik się wylogowywuje, więc patrz wyżej. dziekuje bardzo. juz chyba wystarczy Ci 3 razy pomogl? ![]() Czy ja wiem, nie zaszkodzi ![]() Pozdrawiam, Alan |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 17:43 |