深圳市金黑网络技术有限公司始终坚持以用户需求为导向,提供安全、稳定、高效的产品和服务!
签到 · 搜索导航 · 服务热线 · 微信/手机:17817817816

深圳网站建设

查看: 363|回复: 0

php开发教程更改会话存储(session入库)

[复制链接]

UID
1
贡献
844
金币
1540
主题
520
在线时间
333 小时
注册时间
2022-1-15
最后登录
2024-11-12
QQ
发表于 2022-12-20 09:05:31 | 363 | 0 | 显示全部楼层 |阅读模式
php开发教程更改会话存储(session入库)

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();
复制代码

楼主热帖

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

快速回复 返回顶部 返回列表