您当前的位置: 首页 > 网站编程 > PHP教程 > php把session写入数据库示例

php把session写入数据库示例

作者:不详 来源:网络 发布时间: 2014-08-05 09:06 点击:
这篇文章主要介绍了php把session写入数据库示例,需要的朋友可以参考下 代码如下: ?php class session_handler { protected $maxlifetime = null; protected $dbHandle = null; public $config = null; public static function init($args) { return new self($args); }

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));
分享到:
本文"php把session写入数据库示例"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4