原创

来源:互联网 发布:线槽做弯的算法和图片 编辑:程序博客网 时间:2024/04/29 16:44

session入库,就是重写session制机,在session的周期内,获得到session的数据并记录到数据库

Session默认是存放到服务器上的文件中,不方便管理,如果能把session存放到数据库中就可以方便的对数据库进行管理了

比如:

 *   1可以解决跨域操作

 *   2可以实现单点登录

 *   3可以统计在线人数

 *   4可以踢出在线用户

 *   5可以实现同一时只允许一个用户在线


 使用步骤

第一步:php.ini配置文件中设置session.save_handler = user 或者用ini_set设置ini_set('session.save_handler','user');

第二步:创建一个存放session的数据表

sesssion_id用于存放session_id,字段类型为字符型,长度为32

session_value用于存放session的内容,字段类型为text

session_MaxLifeTime用于存放session的生存期

第三步:设置session的处理器,自动调用六个回调函数

session_set_save_handler ( callback $open , callback $close , callback $read , callback $write , callback $destroy , callback $gc )

[php] view plain copy 在CODE上查看代码片派生到我的代码片

  1. ini_set("session.save_handler""user");  
  2.   
  3. session_set_save_handler("open""close""read""write""destroy""gc");  
  4.   
  5. function open () {  
  6.     // 打开数据库链接  连接数据库  
  7.     $link = mysql_connect("127.0.0.1""root""root");  
  8.     mysql_select_db("test"$link);  
  9.     mysql_query("set names utf8");  
  10. }  
  11. function close() {  
  12.     // 关闭数据库链接  
  13.     mysql_close();  
  14. }  
  15. function read($session_id) {  
  16.     // 从表中中读信息  
  17.     $read = mysql_query("select * from session where session_id='{$session_id}'");  
  18.     $return = mysql_fetch_assoc($read);  
  19.     return $return["session_info"];  
  20. }  
  21. function write ($session_id$session_info) {  
  22.     // echo $session_id. "        " . $session_info;  
  23.     // 讲session存入数据库  
  24.     $read = mysql_query("select * from session where session_id='{$session_id}'");  
  25.     $info = mysql_fetch_assoc($read);  
  26.     if (empty($info)) {  
  27.         $time = time();  
  28.         mysql_query("insert into session (session_id, session_info, session_time) values ('{$session_id}', '{$session_info}', '{$time}')");  
  29.     } else {  
  30.         $sql = "update session set session_info='{$session_info}' where session_id='{$session_id}'";  
  31.         mysql_query($sql);  
  32.     }  
  33. }  
  34. function destroy($session_id) {  
  35.     // 销毁指定session  
  36.     mysql_query("delete from session where session_id='{$session_id}'");  
  37. }  
  38. function gc() {  
  39.     // 删除所有过期的session  


  40. 接下来我们在开启session后 设置session值 或者取session值 session就会入库了。

0 0