![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 103 Pomógł: 1 Dołączył: 19.08.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Witam wszystkich (mój pierwszy post na forum (IMG:http://forum.php.pl/style_emoticons/default/guitar.gif) )!
Mam pytanie: jak zliczyć łączny czas zalogowania użytkownika w php/mysql? Problem polega na tym, że nie wiem jak mam się zabrać za to by zamykać sesje przy zamknięciu okna przeglądarki no i ogólnie jak się za to zabrać... Będę się cieszył z każdej pomocy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 171 Pomógł: 32 Dołączył: 5.08.2008 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Musisz skorzystać z sesji :
Przy logowaniu użytkownika informację o użytkowniku zapisujesz w zmiennej $_SESSION['USERNAME'] Następnie przy każdym logowaniu w tabeli gdzie masz użytkowników (u mnie jest to tabela aktywni) o takiej strukturze : id | imie | czas_out | aktywny | dodajesz do aktywny znacznik 'a' np w taki sposób. Kod $active = 'a'; $aktywny = "UPDATE aktywni SET aktywny = '" . $active . "' WHERE kto = '" .$_SESSION['USERNAME'] . "'"; mysql_query($aktywny); Odwrotnie robisz wtedy kiedy ktoś klika "wyloguj" Kod $active = 'd'; $aktywny = "UPDATE aktywni SET aktywny = '" . $active . "' WHERE kto = '" .$_SESSION['USERNAME'] . "'"; mysql_query($aktywny); Teraz najważniejsza część ( to co napisałem powyżej poprzez pobranie z tabeli aktywni wszystkich tych którzy mają 'a' w aktywny da CI pogląd kto jest zalogowany i kto nie jeśli wszyscy będą zawsze klikać zaloguj/wyloguj.) Z praktyki wiem że nigdy tak nie ma ponieważ najczęściej zamykana jest przeglądarka i osoba nadal ma status 'a' mimo że osoby już dawno nie ma na stronie. W takim wypadku stosujemy ten kod (czyli dodajemy dodatkowy ogranicznik czasowy). Kod <?php #nawiązujemy połączenie z bazą $db = mysql_connect($dbhost, $dbuser, $dbpassword); mysql_select_db($dbdatabase, $db); #ustalamy stronę kodową mysql_query("SET NAMES 'utf8'"); #do jednej zmiennej przypisujemy obecną datę (w formacie podanym poniżej) do drugiej zmiennej tą samą datę minus 3 minuty $tajm = date("dmYHis"); $czas = date("dmYHis")-300; #w tabeli która przechowuje dane o użytkoniwkach przypisujemy datę wejścia na stronę osobie która jest zalogowana $dodaj_czas = "UPDATE aktywni SET czasout = '" . $tajm . "' WHERE imie = '" .$_SESSION['USERNAME'] . "'"; mysql_query($aktywny); #następnie pobieramy informację z bazy czy dana osoba jest aktywna i czy kliknęła na jakiś link w ciągu ostatnich 3 minut $sql = "SELECT * FROM aktywni WHERE aktywny = 'a' and czasout > '" .$czas . "'"; $result = mysql_query($sql); $numrows = mysql_num_rows($result); # w zmiennej $numrows mamy informację o ilości użytkowników online echo 'Aktualnie zalogowanych : ' . $numrows; #w ten sposób możesz wyświetlić osoby które są online while($row = mysql_fetch_array($result)) { echo $row['imie']; } mysql_close(); ?> i tutaj najważniejsze - skrypt musi być umieszczony w nagłówku albo stopce każdej z podstron (w ten sposób czas pobytu będzie ciągle uaktualniany i sprawdzana będize aktywność użytkownika na stronie). Najlepiej zrobić to przez include() Mam nadzieję że pomogłem. Pozdrawiam Mariusz upss troszkę nie doczytałem tematu... (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ale z tego co napisałem można łatwo zrobić to co Ty potrzebujesz... |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 14:47 |