/system/session.php

https://github.com/EggBullStudio/Web-2.0-PgAdmin · PHP · 108 lines · 83 code · 14 blank · 11 comment · 22 complexity · 43d0e834e6aa6d73719d7b52822e877d MD5 · raw file

  1. <?
  2. /****************************************************************
  3. *
  4. * This is session.php file, that needs to be included into security.php
  5. * It can possibly be included into other files to provide db sessions
  6. * capabilities.
  7. *
  8. * -- REQUIRES security.php file before it
  9. *
  10. *****************************************************************/
  11. function ses_read($sesid) {
  12. global $db, $dbPrefix;
  13. global $def_timeToLive;
  14. global $sys_stats; // object with statistics
  15. global $ses_data, $ses_userid, $ses_update;
  16. $SQL = "SELECT ses_data, ses_time2live, ses_userid, null,
  17. CASE WHEN now() + interval '5 minutes' > ses_expire THEN 'Y' ELSE 'N' END,
  18. CASE WHEN now() > ses_expire THEN 'Y' ELSE 'N' END
  19. FROM ".$dbPrefix."sys_session
  20. WHERE ses_id = '$sesid'";
  21. $rs = $db->execute($SQL);
  22. // read or initiate session
  23. if (!$rs || $rs->EOF || $rs->fields[5] == 'Y') {
  24. $ret = '';
  25. $sesTime2Live = isset($def_timeToLive) ? $def_timeToLive : 1200;
  26. if ($sys_stats->browserName == '- unknown =') $bname = '-- bot --'; else $bname = $sys_stats->browserName;
  27. $SQL = "DELETE FROM ".$dbPrefix."sys_session WHERE ses_expire < current_timestamp;
  28. INSERT INTO ".$dbPrefix."sys_session(ses_id, ses_data, ses_start, ses_expire,
  29. ses_ip, ses_time2live, ses_browser, ses_host, ses_userid)
  30. VALUES('$sesid', '', now(), now() + interval '$sesTime2Live sec',
  31. '".$_SERVER["REMOTE_ADDR"]."', $sesTime2Live, '".$bname."',
  32. '".$_SERVER["HTTP_HOST"]."', ".($ses_userid != null ? $ses_userid : "NULL").")";
  33. $db->execute($SQL);
  34. $sys_stats->ses_initiated = true;
  35. } else {
  36. $ret = $rs->fields[0];
  37. $ses_data = $ret;
  38. $ses_userid = $rs->fields[2];
  39. $ses_update = ($rs->fields[4] == 'Y' ? true : false);
  40. $sys_stats->ses_initiated = false;
  41. }
  42. return $ret;
  43. }
  44. function ses_write($sesid, $sesdata) {
  45. global $db, $dbPrefix, $def_timeToLive;
  46. global $sys_stats; // object with statistics
  47. global $ses_data, $ses_userid, $ses_update;
  48. $sesTime2Live = isset($def_timeToLive) ? $def_timeToLive : 1200;
  49. if ($ses_update || $sesdata != $ses_data) {
  50. if ($sys_stats->browser === false) {
  51. $SQL = "UPDATE ".$dbPrefix."sys_session SET
  52. ses_data = '$sesdata',
  53. ses_expire = current_timestamp + interval '$sesTime2Live sec',
  54. ses_userid = ".($ses_userid != null ? $ses_userid : "NULL")."
  55. WHERE ses_browser = '".$sys_stats->browserName."'";
  56. } else {
  57. $SQL = "UPDATE ".$dbPrefix."sys_session SET
  58. ses_data = '$sesdata',
  59. ses_expire = current_timestamp + interval '$sesTime2Live sec',
  60. ses_userid = ".($ses_userid != null ? $ses_userid : "NULL")."
  61. WHERE ses_id = '$sesid'";
  62. }
  63. if ($db) $db->execute($SQL);
  64. return $rs ? true : false;
  65. }
  66. return true;
  67. }
  68. function ses_open($save_path, $session_name) {
  69. return true;
  70. }
  71. function ses_close() {
  72. global $db;
  73. return true;
  74. }
  75. function ses_destroy($sesid) {
  76. global $db, $dbPrefix;
  77. $SQL = "DELETE FROM ".$dbPrefix."sys_session WHERE ses_id = '$sesid'";
  78. $rs = $db->execute($SQL);
  79. return $rs ? true : false;
  80. }
  81. function ses_clean($maxLifeTime = null) {
  82. global $db, $dbPrefix;
  83. $SQL = "DELETE FROM ".$dbPrefix."sys_session WHERE ses_expire < current_timestamp";
  84. $rs = $db->execute($SQL);
  85. return $rs ? true : false;
  86. }
  87. // start session
  88. if ($def_dbSession == true) {
  89. ini_set("session.bug_compat_warn", "0");
  90. session_module_name("user");
  91. session_set_save_handler("ses_open", "ses_close", "ses_read", "ses_write", "ses_destroy", "ses_clean");
  92. }
  93. if ($initSession !== 'no' && $initSession !== false) session_start();
  94. ?>