Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Kontrola czasu nieaktywności użytkownika
uirapuru
post
Post #1





Grupa: Zarejestrowani
Postów: 182
Pomógł: 9
Dołączył: 30.04.2005

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
wNogachSpisz
post
Post #2





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


pokaz jeszcze co robi get() destroy() i set().. i test()

Ten post edytował wNogachSpisz 12.05.2009, 09:18:12
Go to the top of the page
+Quote Post
uirapuru
post
Post #3





Grupa: Zarejestrowani
Postów: 182
Pomógł: 9
Dołączył: 30.04.2005

Ostrzeżenie: (0%)
-----


  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. ?>
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 04:50