]>
Commit | Line | Data |
---|---|---|
36bfab86 AD |
1 | <? |
2 | // Original from http://www.daniweb.com/code/snippet43.html | |
3 | ||
4 | require_once "config.php"; | |
5 | require_once "db.php"; | |
6 | ||
62b92564 | 7 | $session_expire = 3600; //seconds |
36bfab86 AD |
8 | |
9 | ini_set("session.gc_probability", 50); | |
8fd92701 | 10 | ini_set("session.name", "ttrss_sid"); |
36bfab86 AD |
11 | |
12 | function open ($s, $n) { | |
13 | ||
14 | global $session_connection; | |
15 | ||
16 | $session_connection = db_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); | |
17 | ||
18 | return true; | |
19 | } | |
20 | ||
21 | function read ($id){ | |
22 | ||
23 | global $session_connection,$session_read; | |
24 | ||
09018e95 AD |
25 | $ip_address = $_SERVER["REMOTE_ADDR"]; |
26 | ||
27 | if (SESSION_CHECK_ADDRESS) { | |
28 | $address_check_qpart = " AND ip_address = '$ip_address'"; | |
29 | } | |
30 | ||
31 | $query = "SELECT data FROM ttrss_sessions WHERE id='$id' $address_check_qpart"; | |
36bfab86 AD |
32 | |
33 | $res = db_query($session_connection, $query); | |
34 | ||
35 | if (db_num_rows($res) != 1) { | |
36 | return ""; | |
37 | } else { | |
38 | $session_read = db_fetch_assoc($res); | |
39 | $session_read["data"] = base64_decode($session_read["data"]); | |
40 | return $session_read["data"]; | |
41 | } | |
42 | } | |
43 | ||
44 | function write ($id, $data) { | |
45 | ||
46 | if (! $data) { | |
47 | return false; | |
48 | } | |
49 | ||
50 | global $session_connection, $session_read, $session_expire; | |
51 | ||
52 | $expire = time() + $session_expire; | |
53 | ||
54 | $data = db_escape_string(base64_encode($data), $session_connection); | |
55 | ||
09018e95 AD |
56 | $ip_address = $_SERVER["REMOTE_ADDR"]; |
57 | ||
58 | if (SESSION_CHECK_ADDRESS) { | |
59 | $address_check_qpart = " AND ip_address = '$ip_address'"; | |
60 | } | |
61 | ||
36bfab86 AD |
62 | if ($session_read) { |
63 | $query = "UPDATE ttrss_sessions SET data='$data', | |
09018e95 | 64 | expire='$expire' WHERE id='$id' $address_check_qpart"; |
36bfab86 | 65 | } else { |
09018e95 AD |
66 | $query = "INSERT INTO ttrss_sessions (id, data, expire, ip_address) |
67 | VALUES ('$id', '$data', '$expire', '$ip_address')"; | |
36bfab86 AD |
68 | } |
69 | ||
70 | db_query($session_connection, $query); | |
71 | return true; | |
72 | } | |
73 | ||
74 | function close () { | |
75 | ||
76 | global $session_connection; | |
77 | ||
78 | db_close($session_connection); | |
79 | ||
80 | return true; | |
81 | } | |
82 | ||
83 | function destroy ($id) { | |
84 | ||
85 | global $session_connection; | |
09018e95 AD |
86 | |
87 | $ip_address = $_SERVER["REMOTE_ADDR"]; | |
88 | ||
89 | if (SESSION_CHECK_ADDRESS) { | |
90 | $address_check_qpart = " AND ip_address = '$ip_address'"; | |
91 | } | |
92 | ||
93 | $query = "DELETE FROM ttrss_sessions WHERE id = '$id' $address_check_qpart"; | |
36bfab86 AD |
94 | |
95 | db_query($session_connection, $query); | |
96 | ||
97 | return true; | |
98 | } | |
99 | ||
100 | function gc ($expire) { | |
101 | ||
102 | global $session_connection; | |
103 | ||
104 | $query = "DELETE FROM ttrss_sessions WHERE expire < " . time(); | |
105 | ||
106 | db_query($session_connection, $query); | |
107 | } | |
108 | ||
8fd92701 AD |
109 | if (DATABASE_BACKED_SESSIONS) { |
110 | session_set_save_handler ("open", "close", "read", "write", "destroy", "gc"); | |
111 | } | |
112 | ||
36bfab86 AD |
113 | session_start(); |
114 | ?> |