Z użytkownikami zalogowanymi nie mam problemu.
Robie CMSa gdzie statystki pokazują aktywnych użytkowników. Oprócz tych zalogowanych są również goście.
mam dwie bazy między którymi zawiązane są interakcje: users oraz session.
w sessions jak juz wspomaniałem w poprzednim poście mam dwie kolumny:
session_id oraz user_id (domyślnie:-1)
-1 odpowiada użytkownikom anonimowym (niezalogowanym), czyli goście.
gdy ktoś się loguje następuje UPDATE bazy session i zmienia się to -1 w odpowiedniej sesji na id użytkownika pobrane z bazy users.
Liczba gości pobierana jest za pomocą num_rows:
<?php
$sql= @mysql_query("SELECT * FROM session WHERE session_user_id='-1'"); ?>
wracając troche: Gdy ktoś wchodzi na stronę tworzy się nowa sesja. Przy zamknięciu i ponownym uruchomieniu strony znowu się tworzy nowa sesja, przez co te -1 w sesji gromadzą się i liczba gości ciągle rośnie.
Teraz wracając do Twojego pytania.
NIe musi to być w AJAXIE (nie przepadam za tym utrudnianiem sobie życia), ale porblem polega na tym, żeby sprawdzić czy dana sesja się zakończyła, czy ktoś zamkną tą przeglądarkę itp. Poprostu jakoś to sprawdzić. Wtedy usuwam sobie rekord w tabeli session pod względem nieaktywnego id sesji.
Mam nadzieje ze jasno wyjaśniłem ;P
dodam jeszcze, że ciastko sessji jest tez ustawione na określony czas.
<?php
?>
Gdy się zakończy i usunie, sesje w bazie zostaje i to -1(gość) również.