《PHP实现session信息存储到数据库》由会员分享,可在线阅读,更多相关《PHP实现session信息存储到数据库(5页珍藏版)》请在金锄头文库上搜索。
1、PHP实现session信息存储到数据库,具体代码如下:/* session信息存储到数据库的类* 表结构:* CREATE TABLE IF NOT EXISTS sessioninfo (* sid varchar(255) NOT NULL,UPDATE* value text NOT NULL,* expiration timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON CURRENT_TIMESTAMP,* PRIMARY KEY (sid)* ) ENGINE=InnoDB DEFAULT CHARSET=utf8;* /class My
2、SessionHandler implements SessionHandlerInterface /* access private* var object数据库连接*/private $_dbLink;* access private* var string 保存 session 的表名*/Private $_sessionTable;/* access private* var string session 名*/private $_sessionName;/* const过期时间*/const SESSION_EXPIRE = 10;public function _construct
3、($dbLink, $sessionTable) if(!is_object($dbLink) return false;$this->_dbLink = $dbLink;$this->_sessionTable = $sessionTable;/*打开* access publicparam string $session_save_path 保存 session 的路径param string $session_name session 名return integer*/public function open($session_save_path, $session_name
4、) $this->_sessionName = $session_name;return 0;/*关闭access publicreturn integer*/public function close() return 0;/*关闭 sessionaccess publicparam string $session_id session IDreturn string*/public function read($session_id) $query = SELECT value FROM $this->_sessionTable WHERE sid =AND UNIX_TIME
5、STAMP(expiration)self:SESSION EXPIRE$session_id .>UNIX_TIMESTAMP(NOW()”;$result = $this->_dbLink->query($query);if(!isset($value) | empty($value) $value =;return $value;$this->_dbLink->query(UPDA TE $this->_sessionTable SET CURRENT_TIMESTAMP() WHERE sid = $session_id);$value = $res
6、ult->fetch_array();$result->free();return $valuevalue;/*expiration =写入 sessionaccess publicparam string $session_id session IDparam string $session_data session datareturn integer*/public function write($session_id, $session_data) $query = SELECT value FROM $this->_sessionTable WHERE sid =
7、$session_idAND UNIX_TIMESTAMP(expiration) +UNIX_TIMESTAMP(NOW()”;$result = $this->_dbLink->query($query);$result = $result->fetch_array(); if(!empty($result) $result = $this->_dbLink->query(UPDATE $session_data WHERE sid = $session_id);else$result = $this->_dbLink->query(INSERT
8、value) VALUES ($session_id, $session_data);if($result)return 0;else return 1;/*self:SESSION EXPIRE>;$this->_sessionTable SET value =INTO $this->_sessionTable (sid,销魂 sessionaccess publicparam string $session_id session IDreturn integer*/public function destroy($session_id) $result = $this-&g
9、t;_dbLink->query(DELETE FROM $this->_sessionTable WHERE sid = $session_id);if($result)return 0;elsereturn 1;/*垃圾回收access publicparam string $maxlifetime session 最长生存时间return integer*/public function gc($maxlifetime) $result = $this->_dbLink->query(DELETE FROM $this->_sessionTable WHER
10、E UNIX_TIMESTAMP(expiration) < UNIX_TIMESTAMP(NOW() - self:SESSION_EXPIRE); if($result) return 0; else return 1; /*$dbLink = new mysqli(localhost, root, root, test);$sessionTable = sessioninfo;$handler = new MySessionHandler($dbLink, $sessionTable);session_set_save_handler($handler);session_start();$_SESSIONname = test;echo $_SESSIONname;/session_destroy();更多信息请查看IT技术专栏