MY_Session   A
last analyzed

Complexity

Total Complexity 9

Size/Duplication

Total Lines 73
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 0

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
dl 0
loc 73
rs 10
c 0
b 0
f 0
ccs 22
cts 22
cp 1
wmc 9
lcom 0
cbo 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
B session_valid() 0 25 3
A sess_read() 0 4 2
A sess_create() 0 4 2
A _serialize() 0 4 1
A _unserialize() 0 4 1
1
<?php
2
3
/**
4
 * Extension of Session Library to
5
 * allow preliminary invalidation, and json-encoded session data
6
 */
7
class MY_Session extends CI_Session {
8
9
	/**
10
	 * Check if the session is valid
11
	 *
12
	 * @return bool
13
	 */
14 5
	public function session_valid()
15
	{
16 5
		$ip_address = $_SERVER['REMOTE_ADDR'];
17 5
		$user_agent = $_SERVER['HTTP_USER_AGENT'];
18
19
		$ip_blacklist = [
20 5
			'0.0.0.0',
21
			'127.0.0.1'
22 5
		];
23
24
		$ua_blacklist = [
25 5
			'false',
26 5
			FALSE,
27 5
			'',
28
			'PHPUnit'
29 5
		];
30
31 5
		if (in_array($ip_address, $ip_blacklist) || in_array($user_agent, $ua_blacklist))
32 5
		{
33 4
			$this->sess_destroy();
34 4
			return FALSE;
35
		}
36
37 1
		return TRUE;
38
	}
39
40
	/**
41
	 * Fetch/validate the current session data
42
	 *
43
	 * @return bool
44
	 */
45 2
	public function sess_read()
46
	{
47 2
		return ($this->session_valid()) ? parent::sess_read() : FALSE;
48
	}
49
50
	/**
51
	 * Validate the session before creation
52
	 */
53 2
	public function sess_create()
54
	{
55 2
		return ($this->session_valid()) ? parent::sess_create() : FALSE;
56
	}
57
58
	/**
59
	 * Serialize the session data to JSON
60
	 *
61
	 * @param array $data
62
	 * @return string
63
	 */
64 37
	public function _serialize($data)
65
	{
66 37
		return json_encode($data);
67
	}
68
69
	/**
70
	 * Unserialize the session data
71
	 *
72
	 * @param string $data
73
	 * @return mixed
74
	 */
75 1
	public function _unserialize($data)
76
	{
77 1
		return json_decode($data, TRUE);
78
	}
79
}
80
/* End of file MY_Session.php */
81
/* Location: ./application/libraries/MY_Session.php */