sessions.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. // Original from http://www.daniweb.com/code/snippet43.html
  3. require_once "config.php";
  4. require_once "db.php";
  5. $session_expire = SESSION_EXPIRE_TIME; //seconds
  6. $session_name = (!defined('TTRSS_SESSION_NAME')) ? "ttrss_sid" : TTRSS_SESSION_NAME;
  7. ini_set("session.gc_probability", 50);
  8. ini_set("session.name", $session_name);
  9. ini_set("session.use_only_cookies", true);
  10. ini_set("session.gc_maxlifetime", SESSION_EXPIRE_TIME);
  11. function open ($s, $n) {
  12. global $session_connection;
  13. $session_connection = db_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
  14. return true;
  15. }
  16. function read ($id){
  17. global $session_connection,$session_read;
  18. $query = "SELECT data FROM ttrss_sessions WHERE id='$id' $address_check_qpart";
  19. $res = db_query($session_connection, $query);
  20. if (db_num_rows($res) != 1) {
  21. return "";
  22. } else {
  23. $session_read = db_fetch_assoc($res);
  24. $session_read["data"] = base64_decode($session_read["data"]);
  25. return $session_read["data"];
  26. }
  27. }
  28. function write ($id, $data) {
  29. if (! $data) {
  30. return false;
  31. }
  32. global $session_connection, $session_read, $session_expire;
  33. $expire = time() + $session_expire;
  34. $data = db_escape_string(base64_encode($data), $session_connection);
  35. if ($session_read) {
  36. $query = "UPDATE ttrss_sessions SET data='$data',
  37. expire='$expire' WHERE id='$id' $address_check_qpart";
  38. } else {
  39. $query = "INSERT INTO ttrss_sessions (id, data, expire)
  40. VALUES ('$id', '$data', '$expire')";
  41. }
  42. db_query($session_connection, $query);
  43. return true;
  44. }
  45. function close () {
  46. global $session_connection;
  47. db_close($session_connection);
  48. return true;
  49. }
  50. function destroy ($id) {
  51. global $session_connection;
  52. $query = "DELETE FROM ttrss_sessions WHERE id = '$id' $address_check_qpart";
  53. db_query($session_connection, $query);
  54. return true;
  55. }
  56. function gc ($expire) {
  57. global $session_connection;
  58. $query = "DELETE FROM ttrss_sessions WHERE expire < " . time();
  59. db_query($session_connection, $query);
  60. }
  61. // session_set_cookie_params(SESSION_COOKIE_LIFETIME);
  62. if (DATABASE_BACKED_SESSIONS) {
  63. session_set_save_handler("open", "close", "read", "write", "destroy", "gc");
  64. }
  65. session_start();
  66. ?>