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... |
|
|
|
Marr [PHP][MYSQL] Jak zliczyć czas zalogowania użytkownika? 19.08.2008, 07:14:51
golaod To jest tak, wrzucasz do bazy timestamp w sekundac... 19.08.2008, 07:39:46
calebos Ja robie to np przez linka ze zmienna $_GET
... 19.08.2008, 07:45:45
Marr myślałem, że zakładając temat w przedszkolu dostan... 19.08.2008, 07:58:23
calebos Stary nikt za Ciebie skryptow pisac nie bedzie.
Fo... 19.08.2008, 08:09:25
Marr Czy ja napisałem coś, że chce gotowy skrypt? Napis... 19.08.2008, 08:22:34
calebos Napisalem nawet juz odpowiedz ale tak myslac o tym... 19.08.2008, 08:36:34
woxala123 Witam! Sorry ze wracam do starego tematu, tylk... 7.02.2016, 14:44:05 ![]() ![]() |
|
Aktualny czas: 14.01.2026 - 04:58 |