找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 858|回复: 0
打印 上一主题 下一主题

php基于session实现数据库交互的类实例

[复制链接]

2500

主题

2513

帖子

7520

积分

论坛元老

Rank: 8Rank: 8

积分
7520
跳转到指定楼层
楼主
发表于 2018-2-14 05:43:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            本文实例讲述了php基于session实现数据库交互的类。分享给大家供大家参考。具体如下:
query("update ".self:table." set value='$session_data', expiry='$session_expire' where session_id='$session_id'");
   self::close();
  }
  self:is_del = TRUE;
}
/**
  * 销毁
  *
  * */
public static function destroy()
{
  $session_id   = self::get_session_id();
  $_COOKIE['WBSID'] = '';
  self:pen();
  self:dbo->query("delete from ".self:table." where session_id='$session_id'");
  self::close();
}
/**
  * 读取 私有
  * */
private static function read()
{
  $session_id = self:session_id;
  if (!$session_id) {
   $session_id = self::get_session_id();
  }
  if (!$session_id) return array();
  $user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? md5($_SERVER['HTTP_USER_AGENT']) : '';
  $client_ip = Fun::getIp();
  $session_expire = TIME - self::get_gc_maxtime();
  $rs = self:dbo->fetchRow("select session_id, value, agent, ip from ".self:table."
   where session_id='$session_id' and expiry>'$session_expire'");
  if (!$rs || $rs['agent'] != $user_agent || $rs['ip'] != $client_ip)
  {
   return FALSE;
  }
  self:session_id = $rs['session_id'];
  return unserialize($rs['value']);
}
/**
  * session 写入 私有
  * */
private static function write(array $session_data)
{
  $session_id = self:session_id;
  if (!$session_id)
  {
   $session_id = self::get_session_id();
  }
  $session_expire = TIME + self::get_gc_maxtime();
  $user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? md5($_SERVER['HTTP_USER_AGENT']) : '';
  $client_ip  = Fun::getIp();
  $session_data = serialize($session_data);
  if (self:session_id && self::$session_id === $session_id)
  {
   self::$dbo->query("update ".self::$table." set value='$session_data', expiry='$session_expire', agent='$user_agent', ip='$client_ip' where session_id='$session_id'");
  }
  else
  {
   self::$session_id = $session_id = self::create_session_id();
   self::$dbo->query("insert into ".self::$table."(session_id, value, expiry, agent, ip)
    values('$session_id', '$session_data', '$session_expire', '$user_agent', '$client_ip')");
  }
  return true;
}
/**
  * session 更新 私有
  * */
private static function update()
{
  if (!self::$is_update)
  {
   $session_id = self::$session_id;
   $session_expire = TIME + self::get_gc_maxtime();
   self::$dbo->query("update ".self::$table." set expiry='$session_expire' where session_id='$session_id'");
  }
  self::$is_update = TRUE;
}
private static function close()
{
  if (!self::$is_gc && mt_rand(1, self::$gc_rate_de)%self::$gc_rate_co == 0)
  {
   self::gc();
  }
  self::$is_gc = TRUE;
}
/**
  * 过期session 清除 随机触发
  * */
private static function gc()
{
  $session_expire = TIME - self::get_gc_maxtime();
   self::$dbo->query("delete from ".self::$table." where expiry
希望本文所述对大家的php程序设计有所帮助。
            
            
您可能感兴趣的文章:
  • PHP用mysql数据库存储session的代码
  • Session保存到数据库的php类分享
  • php把session写入数据库示例
  • PHP独立Session数据库存储操作类分享
  • php中使用session_set_save_handler()函数把session保存到MySQL数据库实例
  • PHP将session信息存储到数据库的类实例
  • php实现将Session写入数据库
  • php session 写入数据库
  • 将PHP的session数据存储到数据库中的代码实例
  • PHP封装的数据库保存session功能类
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端