db.php (1499B)
1 <?php 2 /* 3 CREATE TABLE IF NOT EXISTS `session` ( 4 `session_id` varchar(32) NOT NULL, 5 `data` text NOT NULL, 6 `expire` datetime NOT NULL, 7 PRIMARY KEY (`session_id`) 8 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; 9 */ 10 namespace Session; 11 final class DB { 12 public $expire = ''; 13 14 public function __construct($registry) { 15 $this->db = $registry->get('db'); 16 17 $this->expire = ini_get('session.gc_maxlifetime'); 18 } 19 20 public function read($session_id) { 21 $query = $this->db->query("SELECT `data` FROM `" . DB_PREFIX . "session` WHERE session_id = '" . $this->db->escape($session_id) . "' AND expire > " . (int)time()); 22 23 if ($query->num_rows) { 24 return json_decode($query->row['data'], true); 25 } else { 26 return false; 27 } 28 } 29 30 public function write($session_id, $data) { 31 if ($session_id) { 32 $this->db->query("REPLACE INTO `" . DB_PREFIX . "session` SET session_id = '" . $this->db->escape($session_id) . "', `data` = '" . $this->db->escape(json_encode($data)) . "', expire = '" . $this->db->escape(date('Y-m-d H:i:s', time() + $this->expire)) . "'"); 33 } 34 35 return true; 36 } 37 38 public function destroy($session_id) { 39 $this->db->query("DELETE FROM `" . DB_PREFIX . "session` WHERE session_id = '" . $this->db->escape($session_id) . "'"); 40 41 return true; 42 } 43 44 public function gc($expire) { 45 $this->db->query("DELETE FROM `" . DB_PREFIX . "session` WHERE expire < " . ((int)time() + $expire)); 46 47 return true; 48 } 49 }