一个pdo,session入库的类

 

PHP代码
  1. <?php   
  2. class session {   
  3.     public $lifeTime;   
  4.     private $db;   
  5.     private $table;   
  6.   
  7.     function __construct($db$table)   
  8.     {   
  9.         $this->db=$db;   
  10.         $this->table=$table;   
  11.     }   
  12.   
  13.   
  14.     function open($savePath$sessName)   
  15.     {   
  16.        $this->lifeTime = get_cfg_var("session.gc_maxlifetime");   
  17.        if(!$dbHandle || !$dbSel)return false;   
  18.        return true;   
  19.     }   
  20.   
  21.   
  22.     function close()   
  23.     {   
  24.         $this->gc(ini_get(‘session.gc_maxlifetime’));   
  25.         return ture;   
  26.     }   
  27.   
  28.   
  29.     function read($sessID)   
  30.     {   
  31.         $res = $this->db->query("SELECT session_data AS d FROM $this->table  
  32.                             WHERE session_id = ‘$sessID’  
  33.                             AND session_expires > ".time());   
  34.         if($row = $res->fetch())return $row[‘d’];   
  35.         return "";   
  36.     }   
  37.   
  38.   
  39.     function write($sessID,$sessData)   
  40.     {   
  41.         $newExp = time() + $this->lifeTime;   
  42.         $res = $this->db->query("SELECT count(*) FROM $this->table WHERE session_id = ‘$sessID’");   
  43.         if($res->fetchColumn())   
  44.         {   
  45.             $aff = $this->db->exec("UPDATE $this->table  
  46.                          SET session_expires = ‘$newExp’,  
  47.                          session_data = ‘$sessData’  
  48.                          WHERE session_id = ‘$sessID’");   
  49.             if($aff)return true;   
  50.         }   
  51.         else  
  52.         {   
  53.             $aff = $this->db->exec("INSERT INTO $this->table (  
  54.                          session_id,  
  55.                          session_expires,  
  56.                          session_data)  
  57.                          VALUES(  
  58.                          ‘$sessID’,  
  59.                          ‘$newExp’,  
  60.                          ‘$sessData’)");   
  61.             if($aff)return true;   
  62.         }   
  63.         return false;   
  64.     }   
  65.   
  66.   
  67.     function destroy($sessID)   
  68.     {   
  69.         $aff = $this->db->exec("DELETE FROM $this->table WHERE session_id = ‘$sessID’");   
  70.         if($aff)return true;   
  71.         return false;   
  72.     }   
  73.   
  74.   
  75.     function gc($sessMaxLifeTime)   
  76.     {   
  77.         $aff = $this->db->exec("DELETE FROM $this->table WHERE session_expires < ".time(),$this->dbHandle);   
  78.         return $aff;   
  79.     }   
  80. }   
  81.   
  82.   
  83. $pdo_session = new session($db1‘user_sessions’);   
  84. session_set_save_handler(array($pdo_session,"open"),   
  85.                          array($pdo_session,"close"),   
  86.                          array($pdo_session,"read"),   
  87.                          array($pdo_session,"write"),   
  88.                          array($pdo_session,"destroy"),   
  89.                          array($pdo_session,"gc"));   
  90.   
  91. ?>