123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- <?php
- /**
- * session mysql 数据库存储类
- *
- * @copyright (C) 2005-2010 PHPCMS
- * @license http://www.phpcms.cn/license/
- * @lastmodify 2010-6-8
- */
- class session_mysql {
- var $lifetime = 1800;
- var $db;
- var $table;
- /**
- * 构造函数
- *
- */
- public function __construct() {
- $this->db = pc_base::load_model('session_model');
- $this->lifetime = pc_base::load_config('system','session_ttl');
- session_set_save_handler(array(&$this,'open'), array(&$this,'close'), array(&$this,'read'), array(&$this,'write'), array(&$this,'destroy'), array(&$this,'gc'));
- session_start();
- }
- /**
- * session_set_save_handler open方法
- * @param $save_path
- * @param $session_name
- * @return true
- */
- public function open($save_path, $session_name) {
-
- return true;
- }
- /**
- * session_set_save_handler close方法
- * @return bool
- */
- public function close() {
- return $this->gc($this->lifetime);
- }
- /**
- * 读取session_id
- * session_set_save_handler read方法
- * @return string 读取session_id
- */
- public function read($id) {
- $r = $this->db->get_one(array('sessionid'=>$id), 'data');
- return $r ? $r['data'] : '';
- }
- /**
- * 写入session_id 的值
- *
- * @param $id session
- * @param $data 值
- * @return mixed query 执行结果
- */
- public function write($id, $data) {
- $uid = isset($_SESSION['userid']) ? $_SESSION['userid'] : 0;
- $roleid = isset($_SESSION['roleid']) ? $_SESSION['roleid'] : 0;
- $groupid = isset($_SESSION['groupid']) ? $_SESSION['groupid'] : 0;
- $m = defined('ROUTE_M') ? ROUTE_M : '';
- $c = defined('ROUTE_C') ? ROUTE_C : '';
- $a = defined('ROUTE_A') ? ROUTE_A : '';
- if(strlen($data) > 255) $data = '';
- $ip = ip();
- $sessiondata = array(
- 'sessionid'=>$id,
- 'userid'=>$uid,
- 'ip'=>$ip,
- 'lastvisit'=>SYS_TIME,
- 'roleid'=>$roleid,
- 'groupid'=>$groupid,
- 'm'=>$m,
- 'c'=>$c,
- 'a'=>$a,
- 'data'=>$data,
- );
- return $this->db->insert($sessiondata, 1, 1);
- }
- /**
- * 删除指定的session_id
- *
- * @param $id session
- * @return bool
- */
- public function destroy($id) {
- return $this->db->delete(array('sessionid'=>$id));
- }
- /**
- * 删除过期的 session
- *
- * @param $maxlifetime 存活期时间
- * @return bool
- */
- public function gc($maxlifetime) {
- $expiretime = SYS_TIME - $maxlifetime;
- return $this->db->delete("`lastvisit`<$expiretime");
- }
- }
- ?>
|