根据session查询服务器信息,改变用户session信息

2023-05-16

我感觉这是个好问题。但是你提供的那两种方法个人认为不大好。我的思路是:使用共享式session解决这个问题。

所谓共享式session就是一个用户无论从任何终端登录,如果服务器端存在这个用户没有过期的session那么就把这个session的id返回给客户端,这样做的好处之一是多个终端可以共享服务器session中的数据。假设有一个新用户登录。那么怎么实现共享session呢?很简单,借助于memcache或者redis,以redis为例。(前提是你的session是存储在redis里的)

1.当用户登录成功后,通过user的id取一个hash,比如$key = md5($user->id)。以当前的session id为value,比如$value = session_id();然后把这个键值对存到redis中 Redis::set($key,$value);

2.等到一个用户再登录成功的时候,先用上个步骤的hash方法看看redis中存不存在$key = md5($user->id),如果不存在说明这是个新用户,然后为这个用户执行步骤1。如果存在就取出这个值$value = Redis::get($key),这个value就是该用户上一次登陆的session的id啊!

3.判断步骤2中取出的session id是否过期 Redis::ttl($value);如果没过期就直接返回给客户端,如果过期了或者不存在就创建一个新的session。

如果你使用共享session的方法,当你删除一个用户的时候,你可以根据Redis::get($key = md5($user->id)),得到这个用户的session id 然后根据这个session id删除session,这样他再请求服务器的时候浏览器带过来的cookie中的session id已经过期了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据session查询服务器信息,改变用户session信息 的相关文章

随机推荐