diff options
author | Andrew Dolgov <[email protected]> | 2006-03-02 09:10:43 +0100 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2006-03-02 09:10:43 +0100 |
commit | 36bfab86c2682c460b197029bbae4daa6ff83ec4 (patch) | |
tree | d243e8863dd358be04b3695c0b092287657452b7 /sessions.php | |
parent | 36ae0574dd83d660570574ecc40d0d847dbde897 (diff) |
database backed sessions
Diffstat (limited to 'sessions.php')
-rw-r--r-- | sessions.php | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/sessions.php b/sessions.php new file mode 100644 index 000000000..dddab5012 --- /dev/null +++ b/sessions.php @@ -0,0 +1,92 @@ +<? + // Original from http://www.daniweb.com/code/snippet43.html + + require_once "config.php"; + require_once "db.php"; + + $session_expire = 600; + + ini_set("session.gc_probability", 50); + + function open ($s, $n) { + + global $session_connection; + + $session_connection = db_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); + + return true; + } + + function read ($id){ + + global $session_connection,$session_read; + + $query = "SELECT data FROM ttrss_sessions WHERE id='$id'"; + + $res = db_query($session_connection, $query); + + if (db_num_rows($res) != 1) { + return ""; + } else { + $session_read = db_fetch_assoc($res); + $session_read["data"] = base64_decode($session_read["data"]); + return $session_read["data"]; + } + } + + function write ($id, $data) { + + if (! $data) { + return false; + } + + global $session_connection, $session_read, $session_expire; + + $expire = time() + $session_expire; + + $data = db_escape_string(base64_encode($data), $session_connection); + + if ($session_read) { + $query = "UPDATE ttrss_sessions SET data='$data', + expire='$expire' WHERE id='$id'"; + } else { + $query = "INSERT INTO ttrss_sessions (id, data, expire) + VALUES ('$id', '$data', '$expire')"; + } + + db_query($session_connection, $query); + return true; + } + + function close () { + + global $session_connection; + + db_close($session_connection); + + return true; + } + + function destroy ($id) { + + global $session_connection; + + $query = "DELETE FROM ttrss_sessions WHERE id = '$id'"; + + db_query($session_connection, $query); + + return true; + } + + function gc ($expire) { + + global $session_connection; + + $query = "DELETE FROM ttrss_sessions WHERE expire < " . time(); + + db_query($session_connection, $query); + } + + session_set_save_handler ("open", "close", "read", "write", "destroy", "gc"); + session_start(); +?> |