Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak zliczyć czas trwającej sesji?
Forum PHP.pl > Forum > PHP
eunix
Witam,

Pisze klase do obsługi sesji, chce zrobić coś takiego, że w tabeli sessions bedą przetrzymywane długości sesji danego usera.
Czyli przy każdym odświeżeniu strony, tabela będzie edytowana (odpowiedni rekord) i będzie dodawany czas jaki minął, od ostatniego odświeżenia.
Kombinuje sobie z funkcją time(), ale wychodzą mi bardzo dziwne czasy jak to wyświetlam w funkcji date().
Proszę o pomoc i podpowiedzi.

Pozdrawiam
sobieh
przy zalogowaniu do systemu pobierz sobie czas time(); i zapisz do bazy.
pozniej pobierasz czas z bazy i wkladasz do np. $czas

$zalogowany_od = time() - $czas;
// zwroci czas od jakiego ktos jest zalogowany w Sekundach.

$minuty = $zalogowany_od / 60;
// pokaze od ilu minut

$godziny = $minuty / 60;
// pokaze od ilu godzin

przy wylogowaniu / zakonczeniu sesji

zapisz w bazie czas jako time() ... pozniej bedziesz mogl go pobrac jako info
kiedy ktos sie ostatni raz zalogowal.
eunix
No działa tylko nie wiem czemu jest o godzine do przodu, kod:
  1. <?php
  2. echo '<br /><span style="font-size: 15px;">Zalogowany: ' . date('H:i:s', time() - $row['session_time']) . '</span><br />';
  3. ?>

jak sprawdzam samo $row['session_time'] to czas jest o 2 minuty do tył niż obecny na serwerze.
sobieh
moze to ma jakis zwiazaek z GMT+1 winksmiley.jpg

  1. <?php
  2. function time2str($time , $format = '%d:%d:%d')
  3. {
  4. $hours = intval($time / 3600);
  5. $minutes = intval(($time - ($hours * 3600)) / 60);
  6. $seconds = intval($time - ($hours * 3600) - ($minutes * 60));
  7.  
  8. return sprintf($format , $hours , $minutes , $seconds);
  9. }
  10.  
  11. echo time2str( 123 , 'Zalogowany od %d godzin , %d minut i %d sekund.');
  12. ?>
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.