一、存储介质为数据库:"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(); } } ?>