萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> php把session寫入數據庫示例

php把session寫入數據庫示例

 這篇文章主要介紹了php把session寫入數據庫示例,需要的朋友可以參考下

 代碼如下: <?php 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['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));
copyright © 萬盛學電腦網 all rights reserved