Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] User online, a sesja
Forum PHP.pl > Forum > Przedszkole
bangoo
Mam tabelę 'Users' w ktorej znajduje sie pole 'online' ktore zmienia wartosc na 1 gdy uzytkownik sie loguje. Jak zrobic tak aby wartosc zmieniala sie na 0 po utracie waznosci sesji?
KCG
Po wylogowaniu zmień wartość na '0'
bangoo
To to wiem, ale gdy user nie nacisnie wyloguj tylko zamknie przegladarke?
babejsza
Witam,

popełniasz lekki błąd. Wydaje mi się, że sprawdzanie w bazie czy user jest zalogowany jest bezcelowe, szczególnie, że i tak już ustawiasz sesje. Zapisz to sesji informację o zalogowaniu. Zaoszczędzisz tym sposobem sporo ruchu, bo w tej chwili każda odwiedzona podstrona to kolejne zapytanie do bazy.

Co do samego problemu to w miejscu gdzie kasujesz sesję, ustaw zapytanie UPDATE do bazy z wartością 0 dla pola 'online' i tyle.

W sumie to mam wrażenie, że gdzieś tu jest jakieś małe nieporozumienie i że gdzieś Cię źle zrozumiałem.

//EDIT

a no to teraz wszystko jasne smile.gif.

Najlepiej zrób tak jak napisałem, czyli ustaw sobie zmienną sesyjną z wartością 1 dla użytkownika zalogowanego. To zrobisz w dwie minuty, a w przeciwnym wypadku będziesz musiał w bazie założyć pole dla session_id i je też sprawdzać.
bangoo
Jak jeden user bedzie mogl spradzic czy inny jest zalogowany (uzywajac sesji)?
babejsza
Jeżeli potrzebna Ci tak informacja to rzeczywiście musisz trzymać info w bazie. W takim razie będziesz sobie musiał założyć nowe pole, w którym będziesz przechowywał informację o session_id.

Po wyłączeniu przeglądarki i ponownej próbie zalogowania zostanie nadany nowy session_id i po nim będziesz mógł sprawdzić, że user się wylogowywał (wyłączał przeglądarkę)
Kicok
Do tabeli z identyfikatorami sesji dodaj sobie jeszcze pole przechowujące datę.

Przy każdym wyświetleniu strony:
- sprawdzasz czy w tej tabeli jest już wpis z session_id użytkownika
- - jeśli jest, to aktualizujesz datę ostatniej akcji na obecną dla session_id użytkownika.
- - jeśli nie, to dodajesz do tabeli nowy wiersz z session_id użytkownika i obecną datą.
- usuwasz z tabeli wszystkie wpisy, w których ostatnia akcja wykonana została wcześniej niż np. 5 minut temu
- zliczasz ilość wierszy z tej tabeli i otrzymujesz ilość osób przeglądających twoją stronę
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.