| 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");    }}?>
 |