源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

php把session写入数据库示例

  • 时间:2022-10-11 08:14 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:php把session写入数据库示例
[u]复制代码[/u] 代码如下:
<?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));
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部