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