-
Notifications
You must be signed in to change notification settings - Fork 30
/
Copy pathclass.dbsession.php
49 lines (43 loc) · 1.73 KB
/
class.dbsession.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
<?PHP
class DBSession
{
public static function register()
{
ini_set('session.save_handler', 'user');
session_set_save_handler(array('DBSession', 'open'), array('DBSession', 'close'), array('DBSession', 'read'), array('DBSession', 'write'), array('DBSession', 'destroy'), array('DBSession', 'gc'));
}
public static function open()
{
$db = Database::getDatabase(true);
return $db->isConnected();
}
public static function close()
{
return true;
}
public static function read($id)
{
$db = Database::getDatabase(true);
$db->query('SELECT `data` FROM `sessions` WHERE `id` = :id', array('id' => $id));
return $db->hasRows() ? $db->getValue() : '';
}
public static function write($id, $data)
{
$db = Database::getDatabase(true);
$db->query('DELETE FROM `sessions` WHERE `id` = :id', array('id' => $id));
$db->query('INSERT INTO `sessions` (`id`, `data`, `updated_on`) VALUES (:id, :data, :updated_on)', array('id' => $id, 'data' => $data, 'updated_on' => time()));
return ($db->affectedRows() == 1);
}
public static function destroy($id)
{
$db = Database::getDatabase(true);
$db->query('DELETE FROM `sessions` WHERE `id` = :id', array('id' => $id));
return ($db->affectedRows() == 1);
}
public static function gc($max)
{
$db = Database::getDatabase(true);
$db->query('DELETE FROM `sessions` WHERE `updated_on` < :updated_on', array('updated_on' => time() - $max));
return true;
}
}