session.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <?php
  2. if(!defined("PHPOK_SET"))
  3. {
  4. exit("Access Denied");
  5. }
  6. CLASS session_lib
  7. {
  8. var $db;
  9. var $table;
  10. var $sessid;
  11. var $sys_time;
  12. Function __construct()
  13. {
  14. $this->sys_time = time();
  15. }
  16. #[兼容PHP4]
  17. Function session_lib()
  18. {
  19. $this->__construct();
  20. }
  21. function start($db,$prefix)
  22. {
  23. $this->db = $db;
  24. $this->prefix = $prefix;
  25. //定义SESSIONID
  26. if(!defined("SYS_SESSION_ID"))
  27. {
  28. define("SYS_SESSION_ID","PHPSESSID");
  29. }
  30. $session_id = isset($_POST[SYS_SESSION_ID]) ? $_POST[SYS_SESSION_ID] : (isset($_GET[SYS_SESSION_ID]) ? $_GET[SYS_SESSION_ID] : "");
  31. if($session_id)
  32. {
  33. session_id($session_id);
  34. $this->sessid = $session_id;
  35. }
  36. session_set_save_handler
  37. (
  38. array($this,"open"),
  39. array($this,"close"),
  40. array($this,"read"),
  41. array($this,"write"),
  42. array($this,"destory"),
  43. array($this,"gc")
  44. );
  45. session_start();
  46. }
  47. Function open($save_path,$session_name)
  48. {
  49. return true;
  50. }
  51. Function close()
  52. {
  53. return true;
  54. }
  55. Function read($sid="")
  56. {
  57. $this->sessid = $sid;
  58. $this->db->close_cache();//关闭缓存
  59. $rs = $this->db->get_one("SELECT * FROM ".$this->prefix."session WHERE id='".$sid."'");
  60. $this->db->open_cache();//开启缓存
  61. if(!$rs)
  62. {
  63. $sql = "INSERT INTO ".$this->prefix."session(id,data,lasttime) VALUES('".$sid."','','".$this->sys_time."')";
  64. $this->db->query($sql);
  65. return false;
  66. }
  67. else
  68. {
  69. if(!$rs["data"])
  70. {
  71. return false;
  72. }
  73. return $rs["data"];
  74. }
  75. }
  76. Function write($sid,$data)
  77. {
  78. $this->db->query_count++;
  79. $this->db->query("UPDATE ".$this->prefix."session SET data='".$data."',lasttime='".$this->sys_time."' WHERE id='".$sid."'");
  80. return true;
  81. }
  82. function destory($sid)
  83. {
  84. $this->db->query("DELETE FROM ".$this->prefix."session WHERE id='".$sid."'");
  85. return true;
  86. }
  87. function gc()
  88. {
  89. $this->db->query("DELETE FROM ".$this->prefix."session WHERE lasttime+1800<'".$this->sys_time."'");
  90. return true;
  91. }
  92. function sessid()
  93. {
  94. return $this->sessid;
  95. }
  96. function __destruct()
  97. {
  98. return true;
  99. }
  100. }
  101. ?>