-
Notifications
You must be signed in to change notification settings - Fork 0
/
session.php
127 lines (115 loc) · 3.56 KB
/
session.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<?php
class session
{
static function start($domain)
{
session_set_cookie_params(0, '/', '.' . $domain);
session_start();
}
static function destroy($domain)
{
session_regenerate_id();
session_destroy();
if(isset($_SESSION))
{
unset($_SESSION);
}
}
static function exists($name)
{
self::assert();
return isset($_SESSION[$name]);
}
static function erase($name)
{
self::assert();
unset($_SESSION[$name]);
}
static function checked_erase($name)
{
self::assert($name);
unset($_SESSION[$name]);
}
static function value($name, $value = null)
{
if(is_null($value))
{
self::assert($name);
return $_SESSION[$name];
}
else
{
self::assert();
$_SESSION[$name] = $value;
}
}
static function vector($name, $value = null)
{
if(is_null($value))
{
self::assert($name);
(($array = @unserialize($_SESSION[$name])) !== false and array_values($array) === $array) or runtime_error('Session fetched variable is not a vector: ' . $name);
return $array;
}
else
{
self::assert();
(is_array($value) and array_values($value) === $value) or runtime_error('Session stored variable is not a vector: ' . $name);
$_SESSION[$name] = serialize($value);
}
}
static function map($name, $value = null)
{
if(is_null($value))
{
self::assert($name);
(($array = @unserialize($_SESSION[$name])) !== false and array_values($array) !== $array) or runtime_error('Session fetched variable is not a map: ' . $name);
return $array;
}
else
{
self::assert();
(is_array($value) and array_values($value) !== $value) or runtime_error('Session stored variable is not a map: ' . $name);
$_SESSION[$name] = serialize($value);
}
}
static function xml($name, $value = null)
{
if(is_null($value))
{
self::assert($name);
(($xtree = @unserialize($_SESSION[$name])) !== false and $xtree instanceof xtree) or runtime_error('Session fetched variable is not an XML: ' . $name);
return $xtree->xml();
}
else
{
self::assert();
($value instanceof xml) or runtime_error('Session stored variable is not an XML: ' . $name);
$_SESSION[$name] = serialize(xtree::create($value));
}
}
static function object($name, $value = null)
{
if(is_null($value))
{
self::assert($name);
(($object = @json_decode($_SESSION[$name])) !== false and is_object($object)) or runtime_error('Session fetched variable is not an object: ' . $name);
return $object;
}
else
{
self::assert();
is_object($value) or runtime_error('Session stored variable is not an object: ' . $name);
$_SESSION[$name] = json_encode($value);
}
}
static private function assert($name = null)
{
isset($_SESSION) or runtime_error('Session is not started');
if(!is_null($name))
{
isset($_SESSION[$name]) or runtime_error('Session variable not found: ' . $name);
}
}
}
?>