session写入数据库

  1 <?php
  2     class session
  3     {
  4         private static $handle = null;
  5         private static $ip = null;
  6         private static $lifetime = null;
  7         private static $time = null;
  8
  9         static function init($pdo)
 10         {
 11             self::$handle = $pdo;
 12             self::$ip = !empty($_SERVER["REMOTE_ADDR"]) ? $_SERVER["REMOTE_ADDR"] : "unknow";
 13             self::$lifetime = ini_get(‘session.gc_maxlifetime‘);
 14             self::$time = time();
 15         }
 16
 17         static function start($pdo)
 18         {
 19             self::init($pdo);
 20             session_set_save_handler(
 21                 array(__CLASS__,‘open‘),
 22                 array(__CLASS__,‘close‘),
 23                 array(__CLASS__,‘read‘),
 24                 array(__CLASS__,‘write‘),
 25                 array(__CLASS__,‘destroy‘),
 26                 array(__CLASS__,‘gc‘)
 27             );
 28             session_start();
 29         }
 30
 31         public static function open($path, $name)
 32         {
 33             return true;
 34         }
 35
 36         public static function close()
 37         {
 38             return true;
 39         }
 40
 41         public static function read($PHPSESSID)
 42         {
 43             $sql = "select * from session where PHPSESSID = ?";
 44             $smit = self::$handle->prepare($sql);
 45             $smit->execute(array($PHPSESSID));
 46
 47             if(!$result = $smit->fetch(PDO::FETCH_ASSOC))
 48             {
 49                 return ‘‘;
 50             }
 51
 52             if(self::$ip != $result[‘client_ip‘])
 53             {
 54                 self::destroy($PHPSESSID);
 55                 return ‘‘;
 56             }
 57
 58             if( ($result[‘update_time‘] + self::$lifetime) < self::$time)
 59             {
 60                 self::destroy($PHPSESSID);
 61                 return ‘‘;
 62             }
 63
 64             return $result[‘data‘];
 65         }
 66
 67         public static function write($PHPSESSID,$data)
 68         {
 69             $sql = "select * from session where PHPSESSID = ?";
 70             $stmt = self::$handle->prepare($sql);
 71             $stmt->execute(array($PHPSESSID));
 72
 73             if($result = $stmt->fetch(PDO::FETCH_ASSOC))
 74             {
 75                 if($result[‘data‘] != $data || self::$time-30 > $result[‘update_time‘])
 76                 {
 77                     $sql="update session set update_time = ?, data =? where PHPSESSID = ?";
 78                     $stmt = self::$handle->prepare($sql);
 79                     $stmt->execute(array(self::$time,$data,$PHPSESSID));
 80                 }
 81
 82
 83             }else
 84             {
 85                 if(!empty($data))
 86                 {
 87                     $sql="insert into session(PHPSESSID, update_time, client_ip, data) values(?,?,?,?)";
 88                     $sth = self::$handle->prepare($sql);
 89                     $sth->execute(array($PHPSESSID,self::$time,self::$ip,$data));
 90                 }
 91             }
 92             return true;
 93         }
 94
 95         public static function destroy($PHPSESSID)
 96         {
 97             $sql = "delete from session where PHPSESSID = ?";
 98             $sth = self::$handle->prepare($sql);
 99             $sth->execute(array($PHPSESSID));
100             return true;
101         }
102
103         public static function gc($lifetime)
104         {
105             $sql = "delete from session where update_time < ?";
106             $stmt=self::$handler->prepare($sql);
107             $stmt->execute(array(self::$time-self::$lifetime));
108             return true;
109         }
110     }
111
112     try{
113         $pdo = new PDO("mysql:host=localhost;dbname=test", "root" ,"");
114     }catch(PDOException $e)
115     {
116         echo $e->getMessage();
117     }
118
119     session::start($pdo);
时间: 2024-10-20 02:53:35

session写入数据库的相关文章

将Session写入数据库

使用session_set_save_handler()函数,将Session的内容写入数据库 1 <?php 2 /* 3 *@author Fahy 4 *@link http://home.cnblogs.com/u/HuangWj 5 *数据库为mysql, 6 *数据库名为session,表名为session, 7 *表中字段包括PHPSESSID,update_time,client_ip,data 8 */ 9 class Session{ 10 private static $h

Log4j写入数据库详解

log4j是一个优秀的开源日志记录项目,我们不仅可以对输出的日志的格式自定义,还可以自己定义日志输出的目的地,比如:屏幕,文本文件,数据库,甚至能通过socket输出.本节主要讲述如何将日志信息输入到数据库(可以插入任何数据库,在此主要以MSSQL为例进行详解).用log4j将日志写入数据库主要用到是log4j包下的JDBCAppender类,它提供了将日志信息异步写入数据的功能,我们可以直接使用这个类将我们的日志信息写入数据库:也可以扩展JDBCAppender类,就是将JDBCAppende

php之将用户信息写入数据库

session高级应用将用户信息写入到数据库中 首先建立数据库表 在实验数据库sqldb中建立session表,用于存储数据 在根文件夹下建立须要用到的文件(重点是session,class.php这个类文件.包括列一些方法) 在session.class.php中主要用到的是session_set_save_handler()这种方法.借助PDO进行数据操作.用类编写写入数据库表中, 类中定义了一些静态方法,其属性也要为静态的,这样session的数据就直接写入数据库中,而不是保存在本地目录中

如何借助log4j把日志写入数据库中

log4j是一个优秀的开源日志记录项目,我们不仅可以对输出的日志的格式自定义,还可以自己定义日志输出的目的地,比如:屏幕,文本文件,数据 库,甚至能通过socket输出.本节使用MySQL数据库主要讲述如何将日志信息输入到数据库中. 用log4j将日志写入数据库主要用到是log4j包下的JDBCAppender类,它提供了将日志信息异步写入数据的功能,我们可以直接使用这个类将我 们的日志信息写入数据库:也可以扩展JDBCAppender类,就是将JDBCAppender类作为基类进行二次开发获得

PHP操纵session存入数据库

1 为什么需要session入库 当session中数据很多时,或者web服务器集群共享session时,就需要将session存入数据库 session存入数据库一般是要重写session存储机制,具体实现主要通过: a  自定义相关session函数 b  创建session表 c  重写session函数 数据表如下: 在session.php中重写存储机制 在其他php文件中引入session.php,就可以操作session存入数据库了 查询操作如下:

将RichTextBox的内容直接写入数据库:

将RichTextBox的内容直接写入数据库:private void button1_Click(object sender, EventArgs e){   System.IO.MemoryStream mstream = new System.IO.MemoryStream();   this.richTextBox1.SaveFile(mstream, RichTextBoxStreamType.RichText);   //将流转换成数组   byte[] bWrite = mstre

《项目经验》--通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中

  先看一下我要实现的功能界面:   这个界面的功能在图中已有展现,课程分配(教师教授哪门课程)在之前的页面中已做好.这个页面主要实现的是授课,即给老师教授的课程分配学生.此页面实现功能的步骤已在页面中有所体现,这里不再赘述,此篇文章主要介绍:我是如何通过js从前台获取数据,然后通过ajax技术向后台一般处理程序传递JSON,后台又是如何获取传来的JSON,并对JSON数据转换,然后将转换后的数据写入数据库的! 介绍这些步骤实现前,先说说自己的辛酸:絮叨辛酸,是因为为了实现这个功能,我真的用了很

DataTable数据批量写入数据库三种方法比较

DataTable数据批量写入数据库三种方法比较 标签: it 分类: C#1)   insert循环插入:2)   sqldataadapter.update(dataset,tablename);3)   sqlbulkcopy.WriteToServer(datatable); 1.生成测试的datatable表,表结构如下:UniqueID(主键,自动增长)   |   CompanyName   |   CompanyCode   |   Address   |   Owner   |

Java -&gt; 把Excel表格中的数据写入数据库与从数据库中读出到本地 (未完善)

写入: private void insertFile(HttpServletRequest request, HttpServletResponse response) throws IOException { String path_member = request.getParameter("path_member"); List list = this.insert("f:/tmp001.xls", "gs_sale_members");