用户名:
密 码: 记住
您当前的位置:首页 > 网络编程 > php教程

Mysql存储PHP Session

时间:2015-01-23  来源:西部数据  作者:西部数据

首先要进行的配置如下:

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. ?>
来顶一下
返回首页
返回首页
推荐资讯
WiFi太不安全:7岁女孩11分钟内入侵公共网络 WiFi太不安全:7岁女孩11分钟内入侵近期刚刚发布研究说WiFi网络能获得人们手机里多少私人信息,
不服跑个分?人工智能也出现“刷分”乱象 不服跑个分?人工智能也出现“刷分2014年,人工智能领域突然爆发,成为了科研和科技创业的热门
相关文章
栏目更新
栏目热门