麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > PHP > 正文

php基于session實現數據庫交互的類實例

2024-05-04 23:38:32
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了php基于session實現數據庫交互的類,實例分析了php結合session操作數據庫的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了php基于session實現數據庫交互的類。分享給大家供大家參考。具體如下:

 

 
  1. <?php 
  2. /** 
  3. * session 數據庫存儲類 
  4. */ 
  5. class Session { 
  6. private static $session_id = 0; 
  7. private static $session_data = array(); 
  8. private static $is_update = FALSE; 
  9. private static $is_del = FALSE; 
  10. private static $is_gc = FALSE; 
  11. private static $dbo = NULL; //數據庫連接句柄 
  12. private static $gc_max_time = 1440; 
  13. private static $table = 'sessions'
  14. private static $pre_key = 'weige';//session 密鑰 
  15. //捆綁使用哈 
  16. private static $gc_rate_de = 100;//代表分母 
  17. private static $gc_rate_co = 20;//代表分子 
  18. private static $path = '/';//保存路徑 
  19. private static $domain = null; //域 
  20. private static $secure = false;//默認 
  21. private static $httponly = false;//默認 
  22. /** 
  23. * 獲取數據庫句柄 私有 
  24. */ 
  25. private static function open()  
  26. if (!self::$dbo)  
  27. self::$dbo = Db::factory(); 
  28. return TRUE; 
  29. /** 
  30. * 設置 
  31. * */ 
  32. public static function set($key$val=NULL)  
  33. self::open(); 
  34. $data = self::read(); 
  35. if ($data === FALSE) 
  36. $data = array(); 
  37. if (!$val && is_array($key)) 
  38. $data = $key
  39. }  
  40. else if ($val && is_string($key)) 
  41. $data[$key] = $val
  42. self::write($data); 
  43. self::close(); 
  44. /** 
  45. *獲取值  
  46.  
  47. */ 
  48. public static function get($key=NULL) { 
  49. self::open(); 
  50. self::$session_data = self::read(); 
  51. $ret = ''
  52. if (!$key) { 
  53. $ret = self::$session_data
  54. else if(is_array(self::$session_data) && isset(self::$session_data[$key])) { 
  55. $ret = self::$session_data[$key]; 
  56. self::update();  
  57. self::close(); 
  58. return $ret
  59. /** 
  60. * 刪除或者重置 
  61. * */ 
  62. public static function del($key
  63. if (!self::$is_del)  
  64. self::open(); 
  65. $val = self::read(); 
  66. if (isset($val[$key]))  
  67. unset($val[$key]); 
  68. $session_id = self::$session_id
  69. $session_data = serialize($val); 
  70. $session_expire = TIME + self::get_gc_maxtime(); 
  71. self::$dbo->query("update ".self::$table." set value='$session_data', expiry='$session_expire' where session_id='$session_id'"); 
  72. self::close(); 
  73. self::$is_del = TRUE; 
  74. /** 
  75. * 銷毀 
  76.  
  77. * */ 
  78. public static function destroy()  
  79. $session_id = self::get_session_id(); 
  80. $_COOKIE['WBSID'] = ''
  81. self::open(); 
  82. self::$dbo->query("delete from ".self::$table." where session_id='$session_id'"); 
  83. self::close(); 
  84. /** 
  85. * 讀取 私有 
  86. * */ 
  87. private static function read() 
  88. $session_id = self::$session_id
  89. if (!$session_id) { 
  90. $session_id = self::get_session_id(); 
  91. if (!$session_idreturn array(); 
  92. $user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? md5($_SERVER['HTTP_USER_AGENT']) : ''
  93. $client_ip = Fun::getIp(); 
  94. $session_expire = TIME - self::get_gc_maxtime(); 
  95. $rs = self::$dbo->fetchRow("select session_id, value, agent, ip from ".self::$table." 
  96. where session_id='$session_id' and expiry>'$session_expire'"); 
  97. if (!$rs || $rs['agent'] != $user_agent || $rs['ip'] != $client_ip)  
  98. return FALSE; 
  99. self::$session_id = $rs['session_id']; 
  100. return unserialize($rs['value']); 
  101. /** 
  102. * session 寫入 私有 
  103. * */ 
  104. private static function write(array $session_data)  
  105. $session_id = self::$session_id
  106. if (!$session_id
  107. $session_id = self::get_session_id(); 
  108. $session_expire = TIME + self::get_gc_maxtime(); 
  109. $user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? md5($_SERVER['HTTP_USER_AGENT']) : ''
  110. $client_ip = Fun::getIp(); 
  111. $session_data = serialize($session_data); 
  112. if (self::$session_id && self::$session_id === $session_id)  
  113. self::$dbo->query("update ".self::$table." set value='$session_data', expiry='$session_expire', agent='$user_agent', ip='$client_ip' where session_id='$session_id'"); 
  114. }  
  115. else 
  116. self::$session_id = $session_id = self::create_session_id(); 
  117. self::$dbo->query("insert into ".self::$table."(session_id, value, expiry, agent, ip)  
  118. values('$session_id''$session_data''$session_expire''$user_agent''$client_ip')"); 
  119. return true; 
  120. /** 
  121. * session 更新 私有 
  122. * */ 
  123. private static function update()  
  124. if (!self::$is_update)  
  125. $session_id = self::$session_id
  126. $session_expire = TIME + self::get_gc_maxtime(); 
  127. self::$dbo->query("update ".self::$table." set expiry='$session_expire' where session_id='$session_id'"); 
  128. self::$is_update = TRUE; 
  129. private static function close()  
  130. if (!self::$is_gc && mt_rand(1, self::$gc_rate_de)%self::$gc_rate_co == 0)  
  131. self::gc(); 
  132. self::$is_gc = TRUE; 
  133. /** 
  134. * 過期session 清除 隨機觸發 
  135. * */ 
  136. private static function gc()  
  137. $session_expire = TIME - self::get_gc_maxtime(); 
  138. self::$dbo->query("delete from ".self::$table." where expiry<'$session_expire'"); 
  139. private static function get_session_id()  
  140. if (isset($_COOKIE['WBSID']) && strlen($_COOKIE['WBSID'])==32)  
  141. $sid = $_COOKIE['WBSID']; 
  142. setcookie('WBSID'$sid, TIME + self::get_gc_maxtime(), self::$path, self::$domain, self::$secure, self::$httponly); 
  143. return $sid
  144. return null; 
  145. private static function create_session_id()  
  146. $sid = self::get_session_id(); 
  147. if (!$sid)  
  148. $sid = Fun::getIp() . TIME . microtime(TRUE) . mt_rand(mt_rand(0, 100), mt_rand(100000, 90000000)); 
  149. $sid = md5(self::$pre_key . $sid); 
  150. setcookie('WBSID'substr($sid, 0, 32), TIME + self::get_gc_maxtime(), self::$path, self::$domain, self::$secure, self::$httponly); 
  151. return $sid
  152. public static function get_gc_maxtime() 
  153. return self::$gc_max_time

希望本文所述對大家的php程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 福利免费在线观看 | cosplay裸体福利写真 | 99ri在线 | 成人观看网站 | 亚洲精品无码不卡在线播放he | 一区二区高清视频在线观看 | 亚洲第一页在线观看 | 国产成人av一区二区 | 成人 日韩| 一级免费在线视频 | 狠狠操视频网站 | 久久久久在线观看 | 国产porn在线 | 成人在线观看地址 | 国产一级二级在线播放 | 91精品国产一区二区在线观看 | 成熟女人特级毛片www免费 | 亚洲精品成人18久久久久 | free japan xxxxhdsex69| 欧美一级特黄aaaaaa在线看首页 | 香蕉视频1024 | 在线观看免费污视频 | 日韩欧美中文字幕视频 | 精品久久一区二区三区 | 羞羞视频免费视频欧美 | 久久久久久高清 | 久草在线手机观看 | 欧美国产第一页 | 日韩大片在线永久观看视频网站免费 | 成人午夜激情视频 | 欧美日韩国产综合网 | 美国黄色毛片女人性生活片 | 99视频在线观看视频 | 日韩精品一区二 | 污黄视频在线观看 | 久久恋| 爱操视频 | 欧美亚洲一区二区三区四区 | 91精品国产综合久久久欧美 | 日本黄色大片免费观看 | 免费毛片视频 |