]> git.wh0rd.org Git - tt-rss.git/blob - include/sessions.php
Merge pull request #68 from gvmelle/master
[tt-rss.git] / include / sessions.php
1 <?php
2         // Original from http://www.daniweb.com/code/snippet43.html
3
4         require_once "config.php";
5         require_once "db.php";
6
7         $session_expire = SESSION_EXPIRE_TIME; //seconds
8         $session_name = (!defined('TTRSS_SESSION_NAME')) ? "ttrss_sid" : TTRSS_SESSION_NAME;
9
10         if (@$_SERVER['HTTPS'] == "on") {
11                 $session_name .= "_ssl";
12                 ini_set("session.cookie_secure", true);
13         }
14
15         ini_set("session.gc_probability", 50);
16         ini_set("session.name", $session_name);
17         ini_set("session.use_only_cookies", true);
18         ini_set("session.gc_maxlifetime", SESSION_EXPIRE_TIME);
19
20         function ttrss_open ($s, $n) {
21
22                 global $session_connection;
23
24                 $session_connection = db_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
25
26                 return true;
27         }
28
29         function ttrss_read ($id){
30
31                 global $session_connection,$session_read;
32
33                 $query = "SELECT data FROM ttrss_sessions WHERE id='$id'";
34
35                 $res = db_query($session_connection, $query);
36
37                 if (db_num_rows($res) != 1) {
38                         return "";
39                 } else {
40                         $session_read = db_fetch_assoc($res);
41                         $session_read["data"] = base64_decode($session_read["data"]);
42                         return $session_read["data"];
43                 }
44         }
45
46         function ttrss_write ($id, $data) {
47
48                 if (! $data) {
49                         return false;
50                 }
51
52                 global $session_connection, $session_read, $session_expire;
53
54                 $expire = time() + $session_expire;
55
56                 $data = db_escape_string($session_connection, base64_encode($data), false);
57
58                 if ($session_read) {
59                         $query = "UPDATE ttrss_sessions SET data='$data',
60                                         expire='$expire' WHERE id='$id'";
61                 } else {
62                         $query = "INSERT INTO ttrss_sessions (id, data, expire)
63                                         VALUES ('$id', '$data', '$expire')";
64                 }
65
66                 db_query($session_connection, $query);
67                 return true;
68         }
69
70         function ttrss_close () {
71
72                 global $session_connection;
73
74                 //db_close($session_connection);
75
76                 return true;
77         }
78
79         function ttrss_destroy ($id) {
80
81                 global $session_connection;
82
83                 $query = "DELETE FROM ttrss_sessions WHERE id = '$id'";
84
85                 db_query($session_connection, $query);
86
87                 return true;
88         }
89
90         function ttrss_gc ($expire) {
91
92                 global $session_connection;
93
94                 $query = "DELETE FROM ttrss_sessions WHERE expire < " . time();
95
96                 db_query($session_connection, $query);
97         }
98
99         if (!SINGLE_USER_MODE /* && DB_TYPE == "pgsql" */) {
100                 session_set_save_handler("ttrss_open",
101                         "ttrss_close", "ttrss_read", "ttrss_write",
102                         "ttrss_destroy", "ttrss_gc");
103         }
104
105         session_set_cookie_params(SESSION_COOKIE_LIFETIME);
106
107         if (!defined('TTRSS_SESSION_NAME') || TTRSS_SESSION_NAME != 'ttrss_api_sid') {
108                 @session_start();
109         }
110 ?>