Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: update tabeli w sql po zamknięciu karty
Forum PHP.pl > Forum > PHP
MadMark
Witam,

mam problem ze znalezieniem sposobu, jak po zamknięcku karty przeglądarki (bez wciśnięcia "Logout/Wyloguj") zrobić update do sql?
Szukałem już troche i była mowa o ajaxie, ale nie rozumiem tego ani troche.
Ponieważ mam tabelkę o nazwie admins_log a w niej kolumny id, login, user_level, stdate, endate (pierwsze dwa chyba jasne, user_level = www admin/www moderatow itp, stdate = data zalogowania na konto, uaktualniana poprawnie przy każdym zalogowaniu, endate = wylogowanie), która jest przeznaczona tylko dla teamowców, chce jej użyć do logowania, gdyż nie jest mi potrezbne logować wszystkich userków logujących się na www z zapisywaniem szczegółowaej daty.

Samo update do sal mam już napisane i przy kliknięciu w wyloguj działa jak najbardziej poprawnie, tylko jak się zapomni o wylogowaniu i się po prostu wyjdzie to data (endate) pozostaje taka sama i admin/mod jest bez przerwy pokazywaney jako "online" bo data zalogowania jest większa od daty wylogowania.

Próbowałem też kombinować z cookies, ale... Potrzebny mi sposób na zrobienie update sql, bo samo zakończenie sesji po zamknięciu karty nic mi nie da.

Chyba, że da się zablokować możliwość zamknięcia karty/przejścia na inną stronę dla osób z tabeli admins_log z user_level > 0 ...


Ktoś ma jakieś pomysły ? Tylko prosiłbym o szczegóły i opis - co do czego i co czym jest.


Z góry dziękuję.
wookieb
przeczytaj o czymś takim jak session handler na bazie. Uniwersalnej i zawsze działającej metody na wykrycie zamkniecia karty i odnotowania tego przypadku natychmiast w bazie nie ma.
MadMark
Cytat
przeczytaj o czymś takim jak session handler na bazie.


Jestem w stanie operować na tych najprostrzych funkcjach, a to stanowi dla mnie kres możliwości.
Po prostu nie wiem.

Cytat
Uniwersalnej i zawsze działającej metody na wykrycie zamkniecia karty i odnotowania tego przypadku natychmiast w bazie nie ma.


Otóż nie chodzi mi o metodę wykrywającą zamknięcie karty w każdym przypadku, tylko dla wyznaczonych osób.
I mógłby mi ktoś pokazać jak np w ajaxie zrobić tak, że po 100 pustych requestach (np. przy odświerzaniu niewidocznego elementu w headerze strony) automatycznie konto zostanie wylogowane i zrobiony update do sql ?



Albo czy jest inna metoda sprawdzenia czy konto wciąż jest połączone, już olejmy te daty wylogowania/zalogowania, tylko czy jest możliwe pokazanie aktualnego statusu online/offline dla danego konta spełniającego warunki selecta ze sql ?
wookieb
http://wortal.php.pl/phppl/wortal/artykuly...handler_czesc_i

Z tym że ten session handler powinien zostać przerobiony na to żeby nie trzymać danych w bazie tylko pliku. W tabeli session handlera dorabiasz pole "id_user" i już wiesz, czy jest online czy nie.
MadMark
  1. $plik = "online.txt"; # Adres pliku txt z chmod 666
  2. $czas = 200; # CZAS ONLINE (zalecany 200sek.)
  3. $t = time();
  4. $ip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
  5. $u = explode("\n", str_replace("\r", "", @join("", @file($plik))));
  6. foreach($u as $i => $v) {
  7. $e = explode("|", $v);
  8. if($e[0] == $ip || $e[1] < $t) unset($u[$i]);
  9. }
  10. $u[] = $ip . "|" . ($t + $czas);
  11. $fp = fopen($plik, "w");
  12. flock($fp, 2);
  13. fputs($fp, join("\n", $u));
  14. flock($fp, 3);
  15. fclose($fp);
  16. $ile = 'Guests: <b>'.count($u).'</b>';


Mam takie "coś". Ale to 'coś' wyświetla ile jest w ogóle osób online na stronie z pliku online.txt. Jak to przerobić pod wybrane osoby z tabeli admins_log (id, login) ?
wookieb
Czy przeczytałeś w ogóle to co Ci podałem czy będziesz wklejał kody, których nawet nie rozumiesz?
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.