«

修改session的存储机制

时间:2023-3-1 21:47     作者:wen     分类: PHP


<?php
//修改session的存储机制
   //1.新建一张数据表来保存session的内容
   //mysql>create table session(sess_id varchar(32),sess_content text,last_time int)engine myisam default charset utf8;
   //2.修改配置
   //将session的存储处理器设置为user,表示自定义的意识
   ini_set('session.save_handler', 'user');
   //将session打的存储使用session_set_save_handler()修改,参数都是函数名
   session_set_save_handler('open', 'close', 'read', 'write', 'destroy', 'gc');
   // 参数1:session_start()时候所做的处理
   function open()
   {
      //去数据库读内容
      $link = mysql_connect("localhost","root","root");
      mysql_select_db("php");
      mysql_query("set names utf8");
   }
   // 参数2:脚本关闭时的处理程序
   function close()
   {
      echo '脚本结束';
      return true;
   }
   // 参数3:读取数据库中的session数据,sessionID会自动传递到该函数中
   function read($sess_id)
   {
      //从数据库读取session记录,根据sessionID找到对应的记录
      $sql = "SELECT sess_content from session where sess_id='$sess_id'";
      $result = mysql_query($sql);
      $row = mysql_fetch_assoc($result);
      return $row['sess_content'];

   }
   // 参数4:向数据表中写入session数据,自动将sessionID以及写入的内容传递到函数中
   function write($sess_id,$sess_content)
   {
      $sql = "INSERT into session values('$sess_id','$sess_content',".time().")";
      return mysql_query($sql);
   }
   // 参数5:销毁session文件,删除数据库中的session记录(执行session_distroy时),也会自动将session_id传递进来
   function destroy($sess_id)
   {
      $sql = "DELETE from session where sess_id='$sess_id'";
      return mysql_query($sql);
   }
   // 参数6:垃圾处理程序,会自动传递session的生命周期
   function gc($max_lifetime)
   {
      $time = time()-$max_lifetime;
      $sql = "DELETE from session where last_time<$time";
      return msyql_query($sql);
   }
   //3.开始重写session的数据