Server : nginx/1.22.1
System : Linux iZwz9daxib3w3i063fw434Z 3.10.0-1127.19.1.el7.x86_64 #1 SMP Tue Aug 25 17:23:54 UTC 2020 x86_64
User : www ( 1000)
PHP Version : 5.6.40
Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Directory :  /www/wwwroot/www.jkmold.com/phpcms/libs/classes/
Upload File :
Current Directory [ Writeable ] Root Directory [ Writeable ]


Current File : /www/wwwroot/www.jkmold.com/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'));

		ini_set("session.cookie_httponly", 1);

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

    }

}

?>