Home > php教程 > PHP源码 > body text

php session writes to database

大家讲道理
Release: 2016-11-08 14:00:39
Original
889 people have browsed it

<?php
 
#
#   codeMaker Alpha 0.1.1 ( haowei.me )
#   This framework comply with the GPL license agreement
#
 
class session_handler {
     
    protected $maxlifetime = null;
    protected $dbHandle = null;
    public $config = null;
     
    public static function init($args) {
        return new self($args);
    }
     
    public function __construct($args) {
         
        $this->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[&#39;host&#39;], 
        $this->config[&#39;user&#39;], 
        $this->config[&#39;password&#39;], 
        $this->config[&#39;database&#39;]);
        mysqli_set_charset($this->link, "utf8");
        $sql = &#39;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;&#39;;
        $sql = sprintf($sql, $this->config[&#39;table&#39;]);
        mysqli_query($this->link, $sql);
        return true;
    }
     
    public function close() {
        return true;
    }
     
     
    public function read($session_id) {
        if(empty($session_id)) return null;
         
        $sql = &#39;SELECT `session_data` AS `data` FROM `%s` WHERE `session_id` = "%s" AND `session_expires` > "%u"&#39;;
        $sql = sprintf($sql, 
        mysqli_real_escape_string($this->link, $this->config[&#39;table&#39;]), 
        mysqli_real_escape_string($this->link, $session_id),
        time());
         
        $result = mysqli_query($this->link, $sql);
        $row = mysqli_fetch_assoc($result);
        return $row[&#39;data&#39;];
         
    }
     
    public function write($session_id, $session_data) {
        if(empty($session_id)) return null;
         
        $newExpires = time() + $this->maxlifetime;
        $sql = &#39;REPLACE INTO `%s` SET `session_id` = "%s", `session_data` = "%s", `session_expires` = "%u"&#39;;
        $sql = sprintf($sql, 
        mysqli_real_escape_string($this->link, $this->config[&#39;table&#39;]), 
        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 = &#39;DELETE FROM `%s` WHERE `session_id` = "%s"&#39;;
        $sql = sprintf($sql, 
        mysqli_real_escape_string($this->link, $this->config[&#39;table&#39;]), 
        mysqli_real_escape_string($this->link, $session_id));
 
        $result = mysqli_query($this->link, $sql);
        return mysqli_affected_rows($this->link);
    }
     
    public function gc() {
        $sql = &#39;DELETE FROM `%s` WHERE `session_expires` < "%u"&#39;;
        $sql = sprintf($sql, 
        mysqli_real_escape_string($this->link, $this->config[&#39;table&#39;]), 
        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));
Copy after login

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!