Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Kontrola czasu nieaktywności użytkownika
Forum PHP.pl > Forum > Przedszkole
uirapuru
Ustawiłem sobie coś takiego, żeby użytkownik nie mógł za długo być bezczynny (po tym czasie następuje reset sesji i wylogowanie)

  1. <?php
  2. private function __construct()
  3.    {
  4.        if(!$this->test())
  5.        {
  6.            session_start();
  7.  
  8.            $nowa_sesja=false;
  9.  
  10.            if($this->get("activity"))
  11.            {
  12.                if(!$nowa_sesja)
  13.                {
  14.                    if(time()-$this->get("activity")>$GLOBALS['session_expired_time'])
  15.                    {
  16.                        $this->destroy();
  17.                    }
  18.                    $this->set("activity",time());
  19.                }
  20.            }
  21.            else if ($this->get("loggedin"))
  22.            {
  23.                $this->set("activity",time());
  24.                $nowa_sesja=true;
  25.            }
  26.        }
  27.        $this->id = $this->get("id");
  28.    }
  29. ?>


Nie chcę być tu zależny od ustawień serwera dot. trwania sesji, więc napisałem swój mechanizm. Ale dajcie znać, czy wszystko wygląda ok. Klasa Sesja() jest singletonem.
wNogachSpisz
pokaz jeszcze co robi get() destroy() i set().. i test()
uirapuru
  1. <?php
  2. function test()
  3.    {
  4.        if(session_id()=="")
  5.        {
  6.            return false;
  7.        }
  8.        else
  9.        {
  10.            return true;
  11.        }    
  12.    }
  13.    function destroy()
  14.    {
  15.        if($this->test())
  16.        {
  17.            fb::info("Zamykam sesję");
  18.            $this->set("loggedin",false);
  19.            $this->set("activity",false);
  20.            session_destroy();
  21.        }
  22.    }
  23.    function set($key,$val)
  24.    {
  25.        if($this->test())
  26.        {
  27.            $_SESSION[$key]=$val;
  28.        }
  29.    }
  30.    function get($key)
  31.    {
  32.        if($this->test() && array_key_exists($key, $_SESSION))
  33.        {
  34.            return $_SESSION[$key];
  35.        }
  36.        return false;
  37.    }
  38. ?>
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.