Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sesja na stronie i odliczanie w JS
Forum PHP.pl > Forum > PHP
TwojPan
Witam,
Pewnie wielu z Was spotkal sie z czym takim na stronach zwlaszcza gdzie trzeba 'cos' wykonac w okreslonym czasie i o to mi chodzi.

Potrzebuje wyswietlic licznik a jak sie czas skonczy to nastepuje przekierowanie do pliku wylogowania. Problem w tym ze to musi dzialac na kazdej podstronie. Czyli jesli podczas zalogowania ustawie (sesja questionmark.gif) czas to ma to dzialac na kazdej podstronie ale nie o poczatku. bo tak to tez potrafie.

Jak sformatowac czas do wyniku: 4:00 i odliczanie od tego ? Potrafie tylko w sekundach.
markonix
Zapisz na początku w sesji czas - time.
Odpal odliczenie na stronie X.
Użytkownik przechodzi na kolejną stronę, sprawdź ile ubyło (porównaj czas w sesji - czas startu od aktualnego).
Wartość przekaż do JS i rozpocznij odliczanie.
TwojPan
Cytat(markonix @ 5.06.2014, 18:50:44 ) *
Zapisz na początku w sesji czas - time.
Odpal odliczenie na stronie X.
Użytkownik przechodzi na kolejną stronę, sprawdź ile ubyło (porównaj czas w sesji - czas startu od aktualnego).
Wartość przekaż do JS i rozpocznij odliczanie.

Ok, wiec zrobilem przyklad lecz nie wiem jak sformatowac czas do postaci 5:00 i od tego odliczanie bo teraz mam ilosc sekund - 300 sekund / 5min.

Najpierw przyklad ktory ustawi sesje. To musi byc gdzies w pliku logowania.

  1. <?
  2. ini_set('session.cookie_lifetime',0);
  3. session_name('PHPSESSID');
  4.  
  5.  
  6.  
  7. $czas = '300'; // 5 min
  8. $aktualny = time();
  9. $aktualnyplus = $aktualny + $czas;
  10. $_SESSION['licz'] = $aktualnyplus;
  11.  
  12. ?>


Przyklad ktory bedzie sprawdzal na innych podstronach.

  1. <?
  2. ini_set('session.cookie_lifetime',0);
  3. session_name('PHPSESSID');
  4.  
  5.  
  6. $now = time();
  7.  
  8. if($_SESSION['licz']<=$now)header("location:logout.php");
  9.  
  10. $co = $_SESSION['licz'] - time();
  11.  
  12. ?>
  13.  
  14. <span id="seconds" style="font-size: 13px"></span> sec. / <?= '300' / 60;?> min.
  15. <script type="text/javascript">
  16. o=document.getElementById('seconds')
  17. function odliczaj(o,sek){
  18. o.innerHTML=sek
  19. if(sek>0)setTimeout(function(){odliczaj(o,--sek)},1e3)
  20. if(sek==0)window.location.href="logout.php"
  21. }
  22. odliczaj(document.getElementById('seconds'),<?= $co;?>)
  23. </script>


Tylko jak teraz sformatowac zmienna $co na format 5:00 i rozpoczacodliczanie zeby bylo bardziej przystepne dla oka bo teraz jest 300 sekund
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.