php更改会话存储(session入库)

[复制链接]
查看1628 | 回复0 | 2020-11-25 09:03 | 显示全部楼层 |阅读模式
1、知识点
  1. a)通过session_set_save_handler()更改存储
  2. b)session_set_save_handler()必须在session_start()之前
  3. c)有6个回调函数,open,close,read,write,destroy,gc。
  4. 4)read必须返回字符串,其他函数返回bool值

  5. 6个回调函数执行的时间:
  6. open():开启会话执行
  7. close():关闭会话执行
  8. read():打开会话后就执行
  9. write():更改会话会话的值和关闭会话之前执行,如果调用了session_destroy()就不会调用write()
  10. destroy():调用session_destroy()的时候自动执行
  11. gc():垃圾回收的时候自动执行。
复制代码
2、代码实现
  1. <?php
  2. //打开会话
  3. function open() {
  4.         global $link;
  5.         $link=mysqli_connect('localhost','root','root','data');
  6.         mysqli_set_charset($link,'utf8');
  7.         return true;
  8. }
  9. //关闭会话
  10. function close() {
  11.         return true;
  12. }
  13. //读取会话
  14. function read($sess_id) {
  15.         global $link;
  16.         $sql="select sess_value from sess where sess_id='$sess_id'";
  17.         $rs=mysqli_query($link,$sql);
  18.         $rows=mysqli_fetch_row($rs);
  19.         return (string)$rows[0];
  20. }
  21. //写入会话
  22. function write($sess_id,$sess_value) {
  23.         global $link;
  24.         $sql="insert into sess values ('$sess_id','$sess_value',unix_timestamp()) on duplicate key update sess_value='$sess_value',sess_time=unix_timestamp()";
  25.         return mysqli_query($link,$sql);
  26. }
  27. //销毁会话
  28. function destroy($sess_id) {
  29.         global $link;
  30.         $sql="delete from sess where sess_id='$sess_id'";
  31.         return mysqli_query($link,$sql);
  32. }
  33. //垃圾回收
  34. function gc($lifetime) {
  35.         global $link;
  36.         $expires=time()-$lifetime;        //过期时间点
  37.         $sql="delete from sess where sess_time<$expires";
  38.         return mysqli_query($link,$sql);
  39. }
  40. //更改会话存储
  41. session_set_save_handler('open','close','read','write','destroy','gc');
  42. //开启会话
  43. session_start();
  44. //session_destroy();
复制代码


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

UID
1
贡献
387
丢币
38902
主题
4607
回帖
116
注册时间
2018-9-25
最后登录
2024-4-26