Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL] Jak zliczyć czas zalogowania użytkownika?
Marr
post
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)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
ferrero2
post
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...
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 14:47