? Php $ configarray (host127.0.0.1, userroot, password123456, databasetest, charsetutf8, tableuser_session); session_handler: init ($ config); session: open (); session: set (profile, array (id1, userhaowei, vip-level6); passive
? Php $ config = array (host = 127.0.0.1, user = root, password = 123456, database = test, charset = utf8, table = user_session); session_handler: init ($ config ); session: open (); session: set (profile, array (id = 1, user = haowei, vip-level = 6); no source
$ Config = array (
"Host" => "127.0.0.1 ",
"User" => "root ",
"Password" => "123456 ",
"Database" => "test ",
"Charset" => "utf8 ",
"Table" => "user_session ");
Session_handler: init ($ config );
Session: open ();
Session: set ("profile", array ("id" => 1, "user" => "haowei", "vip-level" => 6 )); <无>
Source code and demo:Source code source demonstration Source
config = $args;$this->maxlifetime = get_cfg_var("session.gc_maxlifetime");session_set_save_handler(array($this, "open"),array($this, "close"),array($this, "read"),array($this, "write"),array($this, "destroy"),array($this, "gc"));}public function open() {$this->link = mysqli_connect($this->config['host'], $this->config['user'], $this->config['password'], $this->config['database']);mysqli_set_charset($this->link, "utf8");$sql = 'CREATE TABLE IF NOT EXISTS `%s` (`session_id` varchar(255) NOT NULL,`session_data` text,`session_expires` char(10) NOT NULL,PRIMARY KEY (`session_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;';$sql = sprintf($sql, $this->config['table']);mysqli_query($this->link, $sql);return true;}public function close() {return true;}public function read($session_id) {if(empty($session_id)) return null;$sql = 'SELECT `session_data` AS `data` FROM `%s` WHERE `session_id` = "%s" AND `session_expires` > "%u"';$sql = sprintf($sql, mysqli_real_escape_string($this->link, $this->config['table']), mysqli_real_escape_string($this->link, $session_id),time());$result = mysqli_query($this->link, $sql);$row = mysqli_fetch_assoc($result);return $row['data'];}public function write($session_id, $session_data) {if(empty($session_id)) return null;$newExpires = time() + $this->maxlifetime;$sql = 'REPLACE INTO `%s` SET `session_id` = "%s", `session_data` = "%s", `session_expires` = "%u"';$sql = sprintf($sql, mysqli_real_escape_string($this->link, $this->config['table']), mysqli_real_escape_string($this->link, $session_id),mysqli_real_escape_string($this->link, $session_data),$newExpires);$result = mysqli_query($this->link, $sql);return mysqli_affected_rows($this->link); }public function destroy($session_id) {$sql = 'DELETE FROM `%s` WHERE `session_id` = "%s"';$sql = sprintf($sql, mysqli_real_escape_string($this->link, $this->config['table']), mysqli_real_escape_string($this->link, $session_id));$result = mysqli_query($this->link, $sql);return mysqli_affected_rows($this->link); }public function gc() {$sql = 'DELETE FROM `%s` WHERE `session_expires` < "%u"';$sql = sprintf($sql, mysqli_real_escape_string($this->link, $this->config['table']), time());$result = mysqli_query($this->link, $sql);return mysqli_affected_rows($this->link); }}class session {public static $collection = null;public static function open($clean = false, $token = false) {if($clean) ob_end_clean();if($token) session_id($token);session_start();self::$collection = $_SESSION;}public static function id() {$num_args = func_num_args();if($num_args) {$args = func_get_arg(0);return session_id($args);}else{return session_id();}}public static function get($name) {return isset($_SESSION[$name]) ? $_SESSION[$name] : null;}public static function set($name, $value) {$_SESSION[$name] = $value;return true;}public static function delete($name) {if(!isset($_SESSION[$name])) return null;unset($_SESSION[$name]);return true;}public static function destroy() {session_destroy();}}$config = array("host"=> "127.0.0.1","user"=> "root","password"=> "123456","database"=> "test","charset"=> "utf8","table"=> "user_session");session_handler::init($config);session::open();session::set("profile", array("id"=> 1, "user"=> "haowei", "vip-level"=> 6));