业务经理

微信扫描以上二维码

028-61286886

技术咨询

使用session方法缓存数据后读取混乱

迅睿框架 更新 2023-06-09 10:05:33 asd1234

做一个简单的公众号获取用户openid创建账号的功能,其中用到cms的

\Phpcmf\Service::C()->session()->get('变量名称');
\Phpcmf\Service::L('cache')->set_data("缓存名称", "缓存变量值,支持数组", "缓存有效期,单位秒");

session和缓存功能,把access_token存到缓存里,用session来存用户信息。

测试的时候出现问题,在一台手机上登录创建账号成功后,在电脑上用网页打开页面,会读取到手机上缓存的cache和session文件。

手机访问时用“\Phpcmf\Service::C()->session()->set('userinfo',$str);”存账号数据,然后电脑端访问用“\Phpcmf\Service::C()->session()->get('userinfo');”会取到手机上账号的信息,这样子直接存取session就会读取混乱没有隔离,开发文档里只写了存取和删除,怎么解决这个问题?

https://www.xunruicms.com/doc/835.html

方案

  • 官方研发技术-罗老师 #1 · 2023-06-06 15:24:10
    你这种场景不应该用session,应该用 https://www.xunruicms.com/doc/572.html,第三个
  • asd1234 #2 · 2023-06-06 15:34:35
    官方研发技术-罗老师 默认24小时过期,设置时也不能选择过期时间吗,不需要这么频繁更新用户信息。而且一般都是用session来判断是否登录的吧,这种不同端读取到同一个session文件的问题就很奇怪。
  • 官方研发技术-罗老师 #3 · 2023-06-06 15:36:58
    那就用一的,固定缓存,session的作用域你并不了解
  • 小波工作室 #4 · 2023-06-06 15:37:56
    session表示一个会话啊,不止是手机和电脑不一样,同一个电脑不同浏览器都不会一样的
  • asd1234 #5 · 2023-06-06 15:44:06
    官方研发技术-罗老师 固定缓存我也用过了,用来存access_token,但还是那个问题,在手机端打开页面,获取用户信息时调用 \Phpcmf\Service::L('cache')->set_data("Accesstoken", $access_token); 来存下数据。然后在电脑端打开页面,理论上是应该重新获取数据,但是 \Phpcmf\Service::L('cache')->get_data("Accesstoken"); 会取到手机端存的数据,导致信息混乱了。我疑惑的是这既然是框架封装好的方法,那么我直接调用,为什么没有隔离导致了读取混乱。
  • asd1234 #6 · 2023-06-06 15:44:56
    小波工作室 所以我很奇怪啊,这是框架封装好的方法,按理说直接来用就可以了,但实际上就是会出现不同端读取到同一个缓存文件的问题。
  • 小波工作室 #7 · 2023-06-06 16:05:50
    并不奇怪,正常人在不同终端,不会使用session,session只会对当前才有效的,所以还是你基础薄弱了
  • asd1234 #8 · 2023-06-06 16:19:44
    小波工作室 额,不使用session的话,那要用什么来做判断呢?
  • 想钱想疯了 #9 · 2023-06-09 10:05:33
    区分客户端区别的话,可以使用cookie

迅睿系统漏洞

CMS内容同步复制
CMS内容同步复制(2026-10-10)
增加时间是否更新的开关
GEO系统
GEO系统(2026-10-10)
网站发布支持自定义作者名 网站发布 → 站点程序 编辑站点,新增「作...
GeoSeo工具箱
GeoSeo工具箱(2026-10-10)
增加操作说明
注册赠送
注册赠送(2026-10-10)
增加安装前判断是否安装了用户系统
自动收集404死链
自动收集404死链(2026-10-10)
自动收集404死链+曝光有效文档url,并生成按更新时间生成死链tx...
定时发布-草稿箱
定时发布-草稿箱(2026-10-10)
调用代码显示修正
免备案镜像加速
免备案镜像加速(2026-10-10)
自动抓取源站的附件到国内加速站。速度嘎嘎快,安全又省钱,双重备份。
防伪查询
防伪查询(2026-10-10)
防伪码扫码查询,包含uniapp(h5)端,跟微信小程序端,因为扫码...