下面是Session保存到数据库的PHP类,和大家分享下,欢迎拍砖的哈,拍的时候看着点就行哈!

<?php class SessionToDB { private $_path = null; private $_name = null; private $_pdo = null; private $_ip = null; private $_maxLifeTime = 0; public function __construct(PDO $pdo) { session_set_save_handler( array(&$this, 'open'), array(&$this, 'close'), array(&$this, 'read'), array(&$this, 'write'), array(&$this, 'destroy'), array(&$this, 'gc') ); $this->_pdo = $pdo; $this->_ip = !empty($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : null; $this->_maxLifeTime = ini_get('session.gc_maxlifetime'); } public function open($path,$name) { return true; } public function close() { return true; } public function read($id) { $sql = 'SELECT * FROM session where PHPSESSID = ?'; $stmt = $this->_pdo->prepare($sql); $stmt->execute(array($id)); if (!$result = $stmt->fetch(PDO::FETCH_ASSOC)) { return null; } elseif ($this->_ip != $result['client_ip']) { return null; } elseif ($result['update_time']+$this->_maxLifeTime < time()){ $this->destroy($id); return null; } else { return $result['data']; } } public function write($id,$data) { $sql = 'SELECT * FROM session where PHPSESSID = ?'; $stmt = $this->_pdo->prepare($sql); $stmt->execute(array($id)); if ($result = $stmt->fetch(PDO::FETCH_ASSOC)) { if ($result['data'] != $data) { $sql = 'UPDATE session SET update_time =? , date = ? WHERE PHPSESSID = ?'; $stmt = $this->_pdo->prepare($sql); $stmt->execute(array(time(), $data, $id)); } } else { if (!empty($data)) { $sql = 'INSERT INTO session (PHPSESSID, update_time, client_ip, data) VALUES (?,?,?,?)'; $stmt = $this->_pdo->prepare($sql); $stmt->execute(array($id, time(), $this->_ip, $data)); } } return true; } public function destroy($id) { $sql = 'DELETE FROM session WHERE PHPSESSID = ?'; $stmt = $this->_pdo->prepare($sql); $stmt->execute(array($id)); return true; } public function gc($maxLifeTime) { $sql = 'DELETE FROM session WHERE update_time < ?'; $stmt = $this->_pdo->prepare($sql); $stmt->execute(array(time() - $maxLifeTime)); return true; } } try{ $pdo = new PDO('mysql:host=localhost;dbname=rphp4zf', 'root','rickyfeng'); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); new SessionToDB($pdo); } catch(PDOException $e) { echo 'Error: '.$e->getMessage(); }
来源:豆芽博客,地址:http://www.aichengxu.com/article/PHP/567_1.html保留原文链接,是开源分享的开始.

PHP类分享:session保存到数据库相关推荐

  1. php将简单的数据从数据库,php将session保存到数据库的简单示例

    /** * PHP中将session保存到数据库的代码 * * @param * @arrange 512-笔记网: 512Pic.com **/ // 'sessions' table schema ...

  2. ASP.NET将Session保存到数据库中

    因为ASP.NET中Session的存取机制与ASP相同,都是保存在进行中, 一旦进程崩溃,所有Session信息将会丢失,所以我采取了将Session信息保存到SQL Server中,尽管还有其它的 ...

  3. 进程外Session保存和全局文件错误捕获

    Session深入学习,进程外的Session 当用户登入页面跳转时候,我们会将用户登录信息保存在服务端一个键值对的Session(Session池)中.那么Session池又是在哪里呢? 它最终默认 ...

  4. php图片保存在mysql_php实现上传图片保存到数据库的方法

    php实现上传图片保存到数据库的方法.分享给大家供大家参考.具体分析如下: php 上传图片,一般都使用move_uploaded_file方法保存在服务器上.但如果一个网站有多台服务器,就需要把图片 ...

  5. python读取数据库导出文件_Python 获取 datax 执行结果保存到数据库的方法

    执行 datax 作业,创建执行文件,在 crontab 中每天1点(下面有关系)执行: 其中 job_start 及 job_finish 这两行记录是自己添加的,为了方便识别出哪张表. #!/bi ...

  6. Python爬虫实战六之抓取爱问知识人问题并保存至数据库

    大家好,本次为大家带来的是抓取爱问知识人的问题并将问题和答案保存到数据库的方法,涉及的内容包括: Urllib的用法及异常处理 Beautiful Soup的简单应用 MySQLdb的基础用法 正则表 ...

  7. php 设置session目录,php设置session保存目录的方法

    php设置session保存目录的方法 发布时间:2020-08-01 14:33:16 来源:亿速云 阅读:74 作者:清晨 小编给大家分享一下php设置session保存目录的方法,希望大家阅读完 ...

  8. php实现上传图片保存到数据库的方法

    http://www.jb51.net/article/61034.htm 作者:傲雪星枫 字体:[增加 减小] 类型:转载 这篇文章主要介绍了php实现上传图片保存到数据库的方法,可通过将图片保存在 ...

  9. Java:控制台输入车辆信息,将信息保存至数据库中

    程序功能:控制台输入车辆信息,将信息保存至数据库中 程序代码如下: BaseDao.java package DAO_dome.kehozuoye; import java.sql.Connectio ...

最新文章

  1. spring-boot Junit4单元测试
  2. ASP.NET之间数据的传递(未完)
  3. overleaf文章管理
  4. 基于 HTTP 协议的几种实时数据获取技术
  5. Research Fellow、Research Assistant、predoc等的区别
  6. Windows 7技巧之Telnet组件消失之迷
  7. 科幻照进现实!2020年这个最新编程技术,将完全颠覆软件开发习惯
  8. 暑期训练日志----2018.8.20
  9. java 读取txt字符串_java读取txt并获取某一部分字符串
  10. 计算机视觉—图像特效(3)
  11. 资源放送丨《 MySQL中的索引探究 - 2020云和恩墨大讲堂》PPT视频
  12. DOS下文件操作命令
  13. Win7 计算机中丢失api-ms-win-core-path-|1-1-0.dll
  14. 常用邮件客户端软件的代理服务器设置
  15. python日程表代码_【算法提高班】《我的日程安排表》系列
  16. 【机器学习炼丹炉】使用便宜的x99和二手显卡,单显卡的学习机器在3000元,多显卡更贵,可以用支架,架起显卡,用做算法的学习使用,模型训练需要显卡的算力支持,低成本做算法研究,万一从入门到放弃了呢
  17. Tableau导出PDF格式文件
  18. STM32L0系列之【串口收发】
  19. h3c服务器开机无法自行进入系统,H3C服务器设置自启动
  20. 《今日简史》《人类简史》《未来简史》

热门文章

  1. c语言入门敲打,C语言基础三(敲打键盘、寻找资料,循环语句)
  2. python 建站 上传文件_python往网站上传数据
  3. python 遍历内嵌tuple_python内置数据结构list、set、dict、tuple(一)
  4. 忘了微信密码怎么办_微信支付密码怎么改?微信支付密码忘了怎么办?详细教程来了!...
  5. python实践项目(三)
  6. 同窗多年,一个无经验的应届生,一起转行做了软件测试并月薪8K
  7. linux 备份路由配置文件,RouterOS的备份和恢复
  8. 今天小暑是什么时间_来自小暑的问候,小暑黄鳝赛人参,这5种民俗食物别错过...
  9. 量子计算机 并行,核磁共振量子计算机与并行量子计算.pdf
  10. 服务器日志监控系统怎么解决,服务器日志监控系统