一、存储介质为数据库:"phpcms/libs/classes/session_mysql.class.php"
<?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");
}
}
?>
二、存储介质为files文件:"phpcms/libs/classes/session_files.class.php"
<?php
class session_files {
function __construct() {
$path = pc_base::load_config('system', 'session_n') > 0 ? pc_base::load_config('system', 'session_n').';'.pc_base::load_config('system', 'session_savepath') : pc_base::load_config('system', 'session_savepath');
ini_set('session.save_handler', 'files');
session_save_path($path);
session_start();
}
}
?>