View difference between Paste ID: zdjsmQ5C and 8fBWhgPh
SHOW: | | - or go back to the newest paste.
1
<?php
2
namespace Component\Session;
3
4
class Session{
5
	
6
	private $db;
7
	
8
	public function __construct(array $config = array()){
9
		$this->db = \App::service('db');
10
		if(session_id() == ''){
11
			if($config['sess_handler']){
12
				session_set_save_handler(
13
					array($this, "_open"),
14
					array($this, "_close"),
15
					array($this, "_read"),
16
					array($this, "_write"),
17
					array($this, "_destroy"),
18
					array($this, "_gc")
19
				);
20
			}
21
		ini set...
22
		ini_set('session.gc_maxlifetime',259200);
23
		ini_set('session.cookie_lifetime',259200);
24
		ini_set...
25
26
	session_start();
27
	}
28
29
	public function _open(){
30
		return ($this->db)? true : false;
31
	}
32
	
33
	public function _close(){
34
		return true;
35
	}
36
	
37
	public function _read($id){
38
		$this->db->select_table('session')->where(array('sess_id' => $id))->limit(1)->select();
39
		if($this->db->STH->rowCount() > 0){
40
			return $this->db->fetch[0]['data'];
41
		}
42
		else{
43
			$access = time();
44
			$this->db->select_table('session')->insert(array('sess_id' => $id,'access' => $access));
45
		}
46
		return '';
47
	}
48
	
49
	public function _write($id, $data){
50
		$access = time();
51
		
52
		$this->db->select_table('session')->where(array('sess_id' => $id))->update(array('access' => $access, 'data' => $data));
53
		return ($this->db->STH->rowCount() > 0)? true : false;
54
	}
55
	
56
	public function _destroy($id){
57
		$this->db->select_table('session')->where(array('sess_id' => $id))->delete();
58
		return ($this->db->STH->rowCount() > 0)? true : false;
59
	}
60
	
61
	public function _gc($max){
62
		$old = time() - $max;
63
		
64
		$this->db->select_table('session')->where(array('access' => $max), 'AND', '<')->delete();
65
		return ($this->db->STH->rowCount() > 0)? true : false;
66
	}
67
	
68
	...
69
	Other Methods
70
	...
71
}