当前位置:首页 > PHP教程 > php会话 > 列表

Mysql存储PHP Session

发布:smiling 来源: PHP粉丝网  添加日期:2014-01-09 14:04:14 浏览: 评论:0 

首先要进行的配置如下:

1.php.ini中将session.save_handler = files 中的files改为User,其他默认即可,重启Apache

2.本实例创建的数据库名叫php, username: root password:root

本实例设计的数据库的表结构如下所示,代码如下:

  1. create table mysession( 
  2. session_key char(32) not null
  3. session_data text, 
  4. session_expiry int(11), 
  5. primary key(session_key) 
  6. ); 

第一列表示存储session ID,第二列存储session中的数据,第三列存储有效期,下面就是关键的那份自定义函数的实现session_set_save_handler(......),代码如下:

user-define-session-inc.php

  1. <?php 
  2. function mysession_open($save_path$session_name
  3. @mysql_connect("localhost""root""root"or die("数据库服务器连接失败"); 
  4. @mysql_select_db("php"or die("数据库不存在或不可用"); 
  5. return true; 
  6. function mysession_close() 
  7. return true; 
  8. function mysession_read($key
  9. @mysql_connect("localhost""root""root"or die("数据库服务器连接失败"); 
  10. @mysql_select_db("php"or die("数据库不存在或不可用"); 
  11. $expiry_time = time(); 
  12. $query = @mysql_query("select session_data from mysession where session_key = '$key' and session_expiry > $expiry_time"or die("SQL语句执行失败"); 
  13. if($row = mysql_fetch_array($query)) 
  14. return $row['session_data']; 
  15. else 
  16. return false; 
  17. function mysession_write($key$data
  18. @mysql_connect("localhost""root""root"or die("数据库服务器连接失败"); 
  19. @mysql_select_db("php"or die("数据库不存在或不可用"); 
  20. $expiry_time = time() + 1200; 
  21. $query = @mysql_query("select session_data from mysession where session_key = '$key'"or die("SQL语句执行失败"); 
  22. if(mysql_numrows($query) == 0) 
  23. $query = @mysql_query("insert into mysession values('$key', '$data', $expiry_time)"or die("SQL语句执行失败"); 
  24. else 
  25. $query = @mysql_query("update mysession set session_data = '$data', session_expiry = $expiry_time where session_key = '$key'"or die("SQL语句执行失败"); 
  26. return $query
  27. function mysession_destroy($key
  28. @mysql_connect("localhost""root""root"or die("数据库服务器连接失败"); 
  29. @mysql_select_db("php"or die("数据库不存在或不可用"); 
  30. $query = @mysql_query("delete from mysession where session_key = '$key'"
  31. or die("SQL语句执行失败"); 
  32. return $query
  33. function mysession_gc($expiry_time
  34. @mysql_connect("localhost""root""root"or die("数据库服务器连接失败"); 
  35. @mysql_select_db("php"or die("数据库不存在或不可用"); 
  36. $expiry_time = time(); 
  37. $query = @mysql_query("delete from mysession where session_expiry < $expiry_time"or die("SQL语句执行失败"); 
  38. return $query
  39. session_set_save_handler('mysession_open','mysession_close','mysession_read','mysession_write','mysession_destroy','mysession_gc'); 
  40. ?> 

最后面就是测试代码:

1.存储页面 save.php

  1. <?php 
  2. include('user-define-session-inc.php'); 
  3. session_start(); 
  4. $_SESSION['username'] = "Simon"
  5. $_SESSION['password'] = "123456"
  6. ?> 

2.显示页面 show.php

  1. <?php 
  2. include('user-define-session-inc.php'); 
  3. session_start(); 
  4. echo "UserName:".$_SESSION['username']." 
  5. "; 
  6. echo "PassWord:".$_SESSION['password']." 
  7. "; 
  8. ?>

Tags: Mysql 存储 PHP Session

分享到: