PHP头条
热点:

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

www.phpzy.comtrue/php/29591.htmlTechArticlephp把session写入数据库示例 这篇文章主要介绍了php把session写入数据库示例,需要的朋友可以参考下 代码如下: ?php class session_handler { protected $maxlifetime = null; protected $dbHandle = null; public $co...

相关文章

    暂无相关文章

PHP之友评论

今天推荐