Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: akcja po zamknięciu przeglądarki lub zmianie adresu
Forum PHP.pl > Forum > PHP
zazdrosny17
Witam,

mam takie pytanie:

Mam strone z logowaniem za pomoca sesji. I kiedy uzytkownik sie zaloguje moze przejsc na konkretna podstrone. Kiedy tam sie znajdzie zostaje dodany do innej tabeli. Za pomoca ajaxa wtedy na biezaco wysweitlam wszystkich uzytkownikow na tej podstronie. I teraz
chciałbym zrobic tak, aby uzytkownik zostal usuniety z bazy po przejscu na inna strone/podstrone lub po wylaczeniu przeglądarki. Jakis pomysl?

Pozdrawiam
Lwik
Dodanie do bazy pola z czasem? I wyświetlanie userów, którzy mają tam czas większy niż np time()-30 ?wink.gif
zazdrosny17
nie do końca, to nie może być mniej wiecej. tylko doklanie. to ma byc pokazywanie uzytkonikow online na konkretnej stronie. nie chce wyswietlac tylko tych ktorzy sa jakies 10 min, tylko tych ktorzy w ogole sa. jakis inny sposob??

a gdyby tak zrobić że tworze tabele w ktorej jest login, i poczatkowa wartosc.

przykladowo mam 1 uzytkownika i drugi dolacza, wiec pobieram wartosc uzytkownika 1 i wsadzaim do tej tabeli uzytkownikowi 2. przez caly czas wartosc sie zwieksza o 1. czyli ajax caly czas wysyla zapytanie. w momecie kiedy uzytkownik 1 sie wylogue nie zwieszksza juz mu sie wartosc no bo wiadomo. a ja wysweitlam tylko najwieksze wartosci. i teraz jesli trzeci sie zaloguje znow pobieram najwieksza wartosc. czyli w tym momencie od uzytkownika 2 i tak w kolko.

to moze zdac egzamin??
Lwik
Jeżeli masz sporo użytkowników i chcesz często rzucać INSERT / DELETE / SELECT średnio opłaca się to opierać na Mysql - bardziej pliki + jakiś wydajny wspomagacz do PHP.
Owszem, takie rozwiązanie byłoby dobre (możesz to łatwo ogarnąć JSON'em) gdybyś nie musiał usuwać poszczególnych użytkowników po jakimś czasie.
ID jest jak mniemam Increment - więc będzie się zwiększać cały czas, Ty obsługując przykładowo 50 osób jednocześnie każdemu będziesz wysyłał owe 50 wyników później je zwiększając, jednak nie każdy użytkownik się wyloguje / zamknie kartę - więc cały czas jego rekord powinien pozostać w bazie i się uaktualniać a co za tym idzie dalej wyświetlać się na Twojej stronie.
Chyba, że chcesz po prostu wyświetlić ostatnich userów, którzy podjęli jakąś akcję. ;-)
k_@_m_i_l
Poczytaj o akcji unload w jQuery http://api.jquery.com/unload/
Tworzysz taką akcję:
  1. <script type="text/javascript">
  2. $(document).ready(function()
  3. {
  4. $(window).unload(function()
  5. {
  6.  
  7. $.ajax({
  8. type: "POST",
  9. url: "index.php",
  10. data:
  11. {
  12. save_data: 1
  13. },
  14. async: false
  15.  
  16. });
  17. });
  18. });


Akcja ta, przy wyjściu ze strony użytkownika wysyła żądanie ajaxowe, które kierujesz do akcji w php, gdzie robisz operacje na sesji.
Tylko pamiętaj, że akcja unload może się wykonać też przy odświeżeniu strony.
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.