wywołanie funkcji po zamknięciu okna przeglądarki

0

Witam!
założyłem nowy temat, ponieważ przewertowałem już dziesiątki stron i nie znalazłem konkretnego rozwiązania mojego problemu. Jestem dość początkujący. Mój problem polega na tym, że zrobiłem czat w którym przy wylogowywaniu zamyka sesje i usuwa użytkownika z bazy danych. Z tym, że dzieje się to tylko po wciśnięciu przycisku wyloguj. Chciałbym żeby to samo działo się gdy ktoś na szybko zamknie przeglądarkę "X". Z tego co wyczytałem tzreba by było wywołać funkcje po zamknięciu eventu onclose. Ale zupełnie nie wiem jak ma to działać. Dodam jeszcze fukcję która służy do wylogowania użytkownika.

function logout() {
global $db;

 if ($this->logged) $db->query('
  
  UPDATE `msg_sessions`
  SET `logout_time` = NOW()
  WHERE `session_id` = "'.$this->session_id.'" 
  ');
  
 $db->query(" 
DELETE FROM msg_users WHERE login ="."'".$this->login."'".""

);

$this->init_auth();

}

0

w JavaScript jest zdarzenie unload:
https://developer.mozilla.org/en-US/docs/Web/Events/unload

trochę różni się od close
https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Events/close_event

(swoją drogą skąd ten event close? Nie jestem pewien, czy nawet jest w zwykłym przeglądarkowym JavaScript. Link wyżej dotyczy zdaje się XUL, dlatego go skreśliłem).

Jeszcze znalazłem gdzie indziej coś o window.onclose, ale to i tak nie działa (nie odpala się wcale przy zamknięciu taba) i to chyba do czego innego służy https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onclose

Więc raczej unload należałoby wychwytywać

z drugiej strony po stronie serwera/PHP też można by patrzeć czy user jest nieaktywny od iluś minut i wylogowywać (ale nie pytaj mnie jak).

Chciałbym żeby to samo działo się gdy ktoś na szybko zamknie przeglądarkę "X".

Pytanie czy dla twojej aplikacji to dobrze jak strona się sama wylogowuje.

Myślę, że to zależy od rodzaju aplikacji. Jeśli to strona banku czy innej wrażliwej apki to pewnie dobrze, jeśliby się sama wylogowała po zamknięciu strony czy nieaktywności przez jakiś czas. Z drugiej strony czy na pewno zwykły czat powinien agresywnie wylogowywać? Mnie np. wkurza, jak wchodzę na stronę Discorda i muszę się znowu logować. Albo jak mnie wylogowuje z innych serwisów.

Swoją drogą pozostawienie zalogowanego Facebooka mogłoby być bardziej niebezpieczne niż np. zostawienie otwartej strony mBanku (na której i tak się nic nie da zrobić, bo i tak wymagają dodatkowej autoryzacji do każdego działania).

0

LukeJL dzieki za odpowiedź. Faktycznie masz rację, może lepiej by było zostawić użytkownika zalogowanego. I jedyne co mi przychodzi to zapisywać ciasteczka. Problem tylko powstaje w momencie jak ktoś by wszedł w tryb prywatny przeglądarki albo automatycznie po wyjściu z przeglądarki usuwał ciasteczka. Może jest jakieś inne rozwiązanie na to żeby trzymać takiego użytkownika do momentu kiedy faktycznie sam nie wciśnie przycisku wyloguj?

1 użytkowników online, w tym zalogowanych: 0, gości: 1