Source for file Session.class.php

Documentation is available at Session.class.php

  1. <?php
  2. /**
  3.  * R.E. Login 2.0 - Session - class/Session.class.php
  4.  *
  5.  * Munkamenetek kezelése<br />
  6.  * <br />
  7.  * <b>Dátum:</b> 2010.04.02.
  8.  *
  9.  * <b>Szerző weboldala:</b> {@link http://rimelek.hu/}<br />
  10.  * <b>Login weblapja:</b> {@link http://rimelek.hu/meghivos-loginrendszer-r-e-login-v2-0 R.E. Login v2.0}
  11.  *
  12.  * @author Takács Ákos (Rimelek), programmer [at] rimelek [dot] hu
  13.  * @copyright Copyright (C) 2010, Takács Ákos
  14.  * @license http://www.gnu.org/licenses/gpl.html
  15.  * @package RELogin
  16.  * @version 2.0
  17.  */
  18.  
  19. /**
  20.  * Munkamenetek
  21.  *
  22.  * Adatbázisban tárolja a munkameneteket. Beállítható megjegyezze, és az is,
  23.  * hogy meddig jegyezze meg. Ezt a {@link setLifetime()} metódussal lehet megadni.
  24.  *
  25.  * <b>Szerző weboldala:</b> {@link http://rimelek.hu/}<br />
  26.  * <b>Login weblapja:</b> {@link http://rimelek.hu/meghivos-loginrendszer-r-e-login-v2-0 R.E. Login v2.0}
  27.  *
  28.  * @author Takács Ákos (Rimelek), programmer [at] rimelek [dot] hu
  29.  * @copyright Copyright (C) 2010, Takács Ákos
  30.  * @license http://www.gnu.org/licenses/gpl.html
  31.  * @package RELogin
  32.  */
  33. class Session
  34. {
  35.     /**
  36.      * Hány másodpercig jegyezze meg a munkamenetet.
  37.      * Ha nulla, akkor megszűnik.
  38.      *
  39.      * @var int 
  40.      */
  41.     private $lifetime 0;
  42.  
  43.     /**
  44.      * Munkamenet példánya
  45.      *
  46.      * @var Session 
  47.      */
  48.     private static $instance null;
  49.  
  50.     /**
  51.      * Munkamenet példánya
  52.      *
  53.      * @return Session 
  54.      */
  55.     public static function getInstance()
  56.     {
  57.         if (self::$instance === null)
  58.         {
  59.             $class = __CLASS__;
  60.             self::$instance new $class();
  61.         }
  62.         return self::$instance;
  63.     }
  64.  
  65.     /**
  66.      * Munkamenet kezelő előkészítése
  67.      *
  68.      * @ignore
  69.      */
  70.     private    function __construct()
  71.     {
  72.         session_set_save_handler(
  73.             array($this,'open'),
  74.             array($this,'close'),
  75.             array($this,'read'),
  76.             array($this,'write'),
  77.             array($this,'destroy'),
  78.             array($this,'gc')
  79.         );
  80.  
  81.         session_start();
  82.  
  83.         if (isset($_COOKIE['cremember']))
  84.         {
  85.             $this->lifetime = (int)$_COOKIE['cremember'];
  86.         }
  87.     }
  88.  
  89.     /**
  90.      * Munkamenet élethossza másodpercben.
  91.      *
  92.      * $lifetime másodpercig marad életben a munkamenet.
  93.      * Ha $lifetime nulla, akkor megszünteti a létező munkamenetet.
  94.      *
  95.      * @param int $lifetime 
  96.      */
  97.     public function setLifetime($lifetime)
  98.     {
  99.         $this->lifetime $lifetime;
  100.     
  101.         setcookie(session_name(),session_id(),$lifetime!=time()+$lifetime 0,'/');
  102.         $this->rememberMe($lifetime 0);
  103.     }
  104.  
  105.     /**
  106.      * Jegyezze-e meg a munkamenetet
  107.      *
  108.      * @param bool $bool True esetén {@link $lifetime} ideig megjegyez.
  109.      *                 Egyébként megszüntet.
  110.      */
  111.     public function rememberMe($bool=true)
  112.     {
  113.         if ($bool)
  114.         {
  115.             setcookie('cremember'$this->lifetime,System::getTime()+$this->lifetime,'/');
  116.         }
  117.         else
  118.         {
  119.             setcookie('cremember'$this->lifetime,System::getTime()-1000,'/');
  120.         }
  121.     }
  122.  
  123.     /**
  124.      * Munkamenet megnyitása
  125.      *
  126.      * @ignore
  127.      *
  128.      * @param string $path Session útvonala a fájlrendszeren.
  129.      * @param sting $name Session neve
  130.      * @return bool Minidg true
  131.      */
  132.     public function open($path,$name)
  133.     {    
  134.         return true;
  135.     }
  136.  
  137.     /**
  138.      * Munkamenet zárása
  139.      *
  140.      * @ignore
  141.      *
  142.      * @return bool Mindig true
  143.      */
  144.     function close()
  145.     {
  146.         return true;
  147.     }
  148.  
  149.     /**
  150.      * Munkamenet adatok lekérdezése
  151.      *
  152.      * @ignore
  153.      *
  154.      * @param string $sess_id Munkamenet azonosító
  155.      * @return string Sorosított tömb
  156.      */
  157.     function read($sess_id)
  158.     {
  159.         if ($sess mysql_fetch_row(mysql_query("select sess_data from ".Config::DBPREF."sessions where sess_id = '$sess_id'")))
  160.         {
  161.             return $sess[0];
  162.         }
  163.         else
  164.         {
  165.             return '';
  166.         }
  167.     }
  168.  
  169.     /**
  170.      * Munkamenet írása
  171.      *
  172.      * @ignore
  173.      *
  174.      * @param string $sess_id Munkamenet azonosító
  175.      * @param string $sess_data Munkamenet adatok sorosított tömbje
  176.      * @return bool Sikeres volt-e az írás
  177.      */
  178.     function write($sess_id,$sess_data )
  179.     {
  180.         $uid System::$logged System::$user->T_users_userid 0;
  181.         $sess_data mysql_real_escape_string($sess_data);
  182.         return (is_resource(@mysql_query("replace ".
  183.                 Config::DBPREF."sessions set sess_id = '$sess_id', sess_data = '$sess_data', mtime = '".
  184.                 System::getTime()."', remember = ".(int)$this->lifetime.", uid = $uid")));
  185.     }
  186.  
  187.     /**
  188.      * Munkamenet megszüntetése
  189.      *
  190.      * @ignore
  191.      *
  192.      * @param string $sess_id Munkamenet azonosító
  193.      * @return bool Sikerült-e a munkamenet megszüntetése
  194.      */
  195.     function destroy($sess_id)
  196.     {
  197.         return (is_resource(@mysql_query("delete from ".Config::DBPREF."sessions where sess_id = '$sess_id'")));
  198.     }
  199.  
  200.  
  201.     /**
  202.      * Felesleges munkamenetek törlése az adatbázisból.
  203.      *
  204.      * @param int $maxlifetime Munkamenet élettartama.
  205.      * @return bool Mindig true
  206.      */
  207.     function gc($maxlifetime)
  208.     {
  209.         $mtime System::getTime($maxlifetime;
  210.         $time System::getTime();
  211.         mysql_query("delete from ".Config::DBPREF."sessions where mtime < if(remember = 0,$mtime,$time - remember)");
  212.         return true;
  213.     }
  214.     
  215. }
  216.  
  217.  
  218. ?>

Documentation generated on Sun, 04 Apr 2010 22:43:51 +0200 by phpDocumentor 1.4.1