shop.balmet.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

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 }