当前位置:首页 > PHP教程 > php会话 > 列表

php session 写入数据库

发布:smiling 来源: PHP粉丝网  添加日期:2021-07-09 14:21:14 浏览: 评论:0 

这篇文章主要介绍了php session 写入数据库的相关资料,需要的朋友可以参考下,本文实例介绍了php session 写入数据库的方法,分享给大家供大家参考,具体内容如下

  1. <?php 
  2.    
  3. #  codeMaker Alpha 0.1.1 ( haowei.me ) 
  4. #  This framework comply with the GPL license agreement 
  5.    
  6. class session_handler { 
  7.      
  8.   protected $maxlifetime = null; 
  9.   protected $dbHandle = null; 
  10.   public $config = null; 
  11.      
  12.   public static function init($args) { 
  13.     return new self($args); 
  14.   } 
  15.      
  16.   public function __construct($args) { 
  17.        
  18.     $this->config = $args
  19.     $this->maxlifetime = get_cfg_var("session.gc_maxlifetime"); 
  20.     session_set_save_handler( 
  21.     array($this"open"), 
  22.     array($this"close"), 
  23.     array($this"read"), 
  24.     array($this"write"), 
  25.     array($this"destroy"), 
  26.     array($this"gc")); 
  27.        
  28.   } 
  29.      
  30.   public function open() { 
  31.     $this->link = mysqli_connect( 
  32.     $this->config['host'],  
  33.     $this->config['user'],  
  34.     $this->config['password'],  
  35.     $this->config['database']); 
  36.     mysqli_set_charset($this->link, "utf8"); 
  37.     $sql = 'CREATE TABLE IF NOT EXISTS `%s` ( 
  38.     `session_id` varchar(255) NOT NULL, 
  39.     `session_data` text, 
  40.     `session_expires` char(10) NOT NULL, 
  41.     PRIMARY KEY (`session_id`) 
  42.     ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;'; 
  43.     $sql = sprintf($sql$this->config['table']); 
  44.     mysqli_query($this->link, $sql); 
  45.     return true; 
  46.   } 
  47.      
  48.   public function close() { 
  49.     return true; 
  50.   } 
  51.      
  52.      
  53.   public function read($session_id) { 
  54.     if(emptyempty($session_id)) return null; 
  55.        
  56.     $sql = 'SELECT `session_data` AS `data` FROM `%s` WHERE `session_id` = "%s" AND `session_expires` > "%u"'
  57.     $sql = sprintf($sql,  
  58.     mysqli_real_escape_string($this->link, $this->config['table']),  
  59.     mysqli_real_escape_string($this->link, $session_id), 
  60.     time()); 
  61.        
  62.     $result = mysqli_query($this->link, $sql); 
  63.     $row = mysqli_fetch_assoc($result); 
  64.     return $row['data']; 
  65.        
  66.   } 
  67.      
  68.   public function write($session_id$session_data) { 
  69.     if(emptyempty($session_id)) return null; 
  70.        
  71.     $newExpires = time() + $this->maxlifetime; 
  72.     $sql = 'REPLACE INTO `%s` SET `session_id` = "%s", `session_data` = "%s", `session_expires` = "%u"'
  73.     $sql = sprintf($sql,  
  74.     mysqli_real_escape_string($this->link, $this->config['table']),  
  75.     mysqli_real_escape_string($this->link, $session_id), 
  76.     mysqli_real_escape_string($this->link, $session_data), 
  77.     $newExpires); 
  78.        
  79.     $result = mysqli_query($this->link, $sql); 
  80.     return mysqli_affected_rows($this->link); 
  81.        
  82.   } 
  83.      
  84.   public function destroy($session_id) { 
  85.     $sql = 'DELETE FROM `%s` WHERE `session_id` = "%s"'
  86.     $sql = sprintf($sql,  
  87.     mysqli_real_escape_string($this->link, $this->config['table']),  
  88.     mysqli_real_escape_string($this->link, $session_id)); 
  89.    
  90.     $result = mysqli_query($this->link, $sql); 
  91.     return mysqli_affected_rows($this->link); 
  92.   } 
  93.      
  94.   public function gc() { 
  95.     $sql = 'DELETE FROM `%s` WHERE `session_expires` < "%u"'
  96.     $sql = sprintf($sql,  
  97.     mysqli_real_escape_string($this->link, $this->config['table']),  
  98.     time()); 
  99.        
  100.     $result = mysqli_query($this->link, $sql); 
  101.     return mysqli_affected_rows($this->link); 
  102.   } 
  103.      
  104.    
  105. class session { 
  106.    
  107.   public static $collection = null; 
  108.      
  109.   public static function open($clean = false, $token = false) { 
  110.     if($clean) ob_end_clean(); 
  111.     if($token) session_id($token); 
  112.     session_start(); 
  113.     self::$collection = $_SESSION
  114.   } 
  115.      
  116.   public static function id() { 
  117.     $num_args = func_num_args(); 
  118.     if($num_args) { 
  119.       $args = func_get_arg(0); 
  120.       return session_id($args); 
  121.     }else
  122.       return session_id(); 
  123.     } 
  124.   } 
  125.      
  126.   public static function get($name) { 
  127.     return isset($_SESSION[$name]) ? $_SESSION[$name] : null; 
  128.   } 
  129.      
  130.   public static function set($name$value) { 
  131.     $_SESSION[$name] = $value
  132.     return true; 
  133.   } 
  134.      
  135.   public static function delete($name) { 
  136.     if(!isset($_SESSION[$name])) return null; 
  137.     unset($_SESSION[$name]); 
  138.     return true; 
  139.   } 
  140.      
  141.   public static function destroy() { 
  142.     session_destroy(); 
  143.   } 
  144.      
  145.    
  146.    
  147.    
  148. $config = array
  149. "host"=> "127.0.0.1"
  150. "user"=> "root"
  151. "password"=> "123456"
  152. "database"=> "test"
  153. "charset"=> "utf8"
  154. "table"=> "user_session"); 
  155.    
  156. session_handler::init($config); 
  157. session::open(); 
  158. session::set("profile"array("id"=> 1, "user"=> "haowei""vip-level"=> 6)); 

以上就是本文的全部内容,希望对大家的学习有所帮助。

Tags: session写入数据库

分享到: