关于session存储用户信息和验证码(短信,邮箱之类的)的细节问题

浏览:5831 发布日期:2013/11/16 分类:求助交流 关键字: session 多用户登录系统 多验证码有效期控制
最近在做一款CMS,在做前后台登录系统的时候,在实际做的过程中却发现小小的session里面会有那么多的小问题出现,虽然都已经解决了,但是总觉得方法不是很科学,希望有大神可以分享一下你们的解决方法,先在这里膜拜一下

问题一:多个登录系统session需不需要分开存储?
比如有会员登录系统和管理员登录系统,但是如果既是管理员又是会员的话就会存在session混乱的状况,比如前台的登录生存时间是20分钟,后台是30分钟,但是如果session没有分开的话,导致sessionID会相同,覆盖掉生存时间
所以我是分两个表存储session的,admin_session和home_session两个表

问题二:看过很多教程都是说验证码存入session,但是可能是没有考虑到多个验证码的话有效期就比较难控制了,例如短信验证码是5分钟,邮箱验证码是20分钟,这样的话就没有办法通过session的生存时间去控制每个验证码的有效期了,当然有更好的方法,比如memcache或者redis这种key-value的存储,但是由于我的CMS是面向中小网站的,大多数是租用虚拟空间的,搭建这样的环境就比较困难了,所以我的解决方法是,将session存储到数据库中,session里面的数据有关联数组来存,例如$_SESSION=array{
    code=array{
       life_time:300,
       update_time:100000,
       value=jkdkeusdkljjksjfie1456 
    },
    code2=array{
       life_time:1200,
       update_time:100000,
       value=jkdkeusdkljjksjfie1456 
    },
    uid=1000
}
这样利用session的回调函数,在读取session的时候先检查里面的code和code2有没有过期,如果过期了就删除掉,然后写入session的时候也检查一下,并且把session的生存时间设为里面子数组中最大的生存时间:1200,这样在code2没有过期之前session也不会被删除掉,但是不知道这样做合不合理

希望大神们可以分享一下你们的做法可以借我参考一下
最佳答案
评论( 相关
后面还有条评论,点击查看>>