• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak sprawdzić czy użytkownik jest online

Object Storage Arubacloud
0 głosów
1,040 wizyt
pytanie zadane 7 lipca 2016 w PHP przez aleksander_szut Użytkownik (940 p.)
Robię stronę na której jest mi potrzebne sprawdzenie czy użytkownik jest aktywny i wpisanie tego do bazy danych na początku chciałem zrobić że przy login.php ustawię że użytkownik jest aktywny a w logout.php że nie aktywny ale to nie miałoby sensu bo gdy użytkownik wyjdzie ze strony to nie będzie w logout.php i będzie dalej aktywny mimo że nie jest

2 odpowiedzi

0 głosów
odpowiedź 7 lipca 2016 przez CzikaCarry Szeryf (75,340 p.)
edycja 7 lipca 2016 przez CzikaCarry
Możesz co pewien okres czasu (30s, 1min, 5min, jak tam chcesz) AJAX'em wysyłać jakąkolwiek informację. Gdy skrypt php ją odbierz pobierasz aktualny czas i wkładasz do tabeli z użytkownikami do kolumny "online" a potem jesli chcesz sprawdzić czy jest online to do tej daty dodajesz te 30zs, minutę czy tam 5min i porównujesz z aktualnym czasem. Możesz też przy każdej aktywności typu zmiana podstrony aktualizować tą datę. Jest tu pełna wyborność, ale ja proponowałbym takie combo :D
komentarz 7 lipca 2016 przez Harsay Pasjonat (23,640 p.)
Stanowczo odradziłbym korzystania z tego rozwiązania, ponieważ użytkownik może przesłać spreparowane/fałszywe dane, które mogą doprowadzić do nieoczekiwanych efektów.
komentarz 7 lipca 2016 przez CzikaCarry Szeryf (75,340 p.)
Może. Równie dobrze może usuwać ciastka i sesje... Ja nie widzę innych rozwiązań oprócz tych trzech.
0 głosów
odpowiedź 7 lipca 2016 przez Harsay Pasjonat (23,640 p.)

Masz następujące możliwości.

1. Zliczyć wszystkie pliki aktywnych sesji

$sessionCount = count(glob(session_save_path() . '/*'));

Nie polecam tego sposobu, ponieważ nie wszystkie sesje mogą dotyczyć użytkownika oraz mogą być pliki już z nieaktualnymi sesjami.

2. Polecam zrobić pewnego rodzaju timestamp w bazie danych i podczas wyświetlania ilości osób online za pomocą kwerendy (zapytania) policzyć użytkowników których timestamp nie przekracza np. 15 minut do teraz. Timestamp można aktualizować, kiedy dany użytkownik będzie poruszać się po stronie.

Przez timestamp mam namyśli datę z godziną ostatniej akcji użytkownika.

komentarz 7 lipca 2016 przez CzikaCarry Szeryf (75,340 p.)
15 min? Trochę niedokładne
komentarz 8 lipca 2016 przez aleksander_szut Użytkownik (940 p.)
Dziękuje za odpowiedź ale nie o to mi chodziło .Chodziło mi o to że gdy osoba wychodzi od razu w bazie jest że jest offline dokładność jest mi bardzo potrzebna .Chcem żeby to działało  bardzo szybko i dokładnie tak jak na fb
komentarz 8 lipca 2016 przez Harsay Pasjonat (23,640 p.)

Jeżeli chcesz natychmiastowo mieć zmianę w bazie danych to musisz wychwycić rozłączenie aktywnego połączenia z takowym czatem. Do tego można wykorzystać tzw. WebSockets
Jeżeli chcesz uprzeć się przy PHP jako języka na serwerze to możesz wykorzystać Ratchet, by stworzyć takowy serwer, który będzie obsługiwać WebSockets.

Oczywiście możesz zastosować AJAX i spróbować odpowiednio zweryfikować użytkownika pytającego się skrypt PHP co kilka sekund w stylu "jestem xyz, podaj mi listę osób online" i wtedy wykonać operację na bazie danych itd.

Myślę, że jest tutaj dużo kombinowania z mojej strony i sprecyzowanie jakiego typu aplikację robisz pomogłoby w znalezieniu najlepszego rozwiązania.

komentarz 8 lipca 2016 przez aleksander_szut Użytkownik (940 p.)
Sprecyzuje ci tą trochę .Robię stronę społecznościową i jest mi to potrzebne bo w stronie będzie funkcja że użytkownicy mogą ze sobą pisać i chce żeby oni wiedzieli czy drugi użytkownik jest aktywny

Podobne pytania

0 głosów
0 odpowiedzi 274 wizyt
0 głosów
1 odpowiedź 149 wizyt
pytanie zadane 24 maja 2017 w PHP przez chmod96 Obywatel (1,380 p.)
+1 głos
1 odpowiedź 149 wizyt
pytanie zadane 17 września 2020 w PHP przez Bakkit Dyskutant (7,600 p.)

92,595 zapytań

141,444 odpowiedzi

319,715 komentarzy

61,980 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...