>  기사  >  백엔드 개발  >  用session登录的一些问题

用session登录的一些问题

WBOY
WBOY원래의
2016-06-23 13:53:49965검색

这样的,我写了一个登录,用的是session。登录的时候,把sessionid用redis储存起来。

现在我想实现一个功能,就是两个用户登录同一个账户,后登录的把前登录的挤掉。

我的一种想法是,登录时,更新redis中存的sessionid,登录用户每做一次操作,都去redis中查询他登录时存的sessionid和当前的是否一致,不一致就是未登录。但是这样做会不会读redis的次数太频繁?会不会有压力?

还有一种想法,就是登录的时候,肯定能从redis中获取到上次存的sessionid,能不能通过这个sessionid把session文件给销毁,这样,前面登录的用户获取不到session文件,就算是未登录了。这种方法只是在登录的时候读取了数据库,读数据库的次数比较少。但是,有一点,我不知道怎么通过sessionid把文件销毁~~

各位大牛,这两个方法哪个好一点?第二个方法中,怎样通过sessionid把文件销毁?或者有没有更好的方法呢?谢谢指教


回复讨论(解决方案)

第二种方法没看明白。是说B登录的时候获得session_id然后销毁A的session文件吗?这怎么做得到 

第二种方法没看明白。是说B登录的时候获得session_id然后销毁A的session文件吗?这怎么做得到 

恩,我就是这个意思,所以我想知道怎么能做到。

做不到啊,session是保存在用户浏览器的 不是同一台电脑登录的话怎么可能删除
或者你的意思是A B两个账号只在同一台电脑登录吗..

做不到啊,session是保存在用户浏览器的 不是同一台电脑登录的话怎么可能删除
或者你的意思是A B两个账号只在同一台电脑登录吗..


我意思是,只是通过sessionid去删除服务器上保存的文件,这样的话,A用户通过他的sessionid就获取 不到储存到服务器上信息了。

登录的时候,把sessionid用redis储存起来
你是用 用户名做键,还是用 sessionid 做键?

如果用用户名做键,那么 redis 中只会有一个 用户名存在,此时他的值(sessionid)不是你的话,就算你没登陆
如果用 sessionid 做键,那么需要依据用户名查询出对应的键(得到多个 sessionid)
遍历这些 sessionid 对不是你的 sessionid 做
session_id($sessionid);
session_start();
unset_session();
最后做
session_id($你的sessionid);
session_start();

登录的时候,把sessionid用redis储存起来
你是用 用户名做键,还是用 sessionid 做键?

如果用用户名做键,那么 redis 中只会有一个 用户名存在,此时他的值(sessionid)不是你的话,就算你没登陆
如果用 sessionid 做键,那么需要依据用户名查询出对应的键(得到多个 sessionid)
遍历这些 sessionid 对不是你的 sessionid 做
session_id($sessionid);
session_start();
unset_session();
最后做
session_id($你的sessionid);
session_start();


用  用户名做键,由于网站必须登录才能使用,那第一个问题,每次验证是否登录都会去redis查询一次,会不会压力太大?用户基数不会太大,最多也就几万吧。

redis 是基于内存的,session 是基于文件的
你就不怕硬盘损坏?

redis 是基于内存的,session 是基于文件的
你就不怕硬盘损坏?


第一句我明白,但是硬盘损坏不太懂,请版主大大赐教。

这有什么可不懂得吗?
杞人忧天,懂吧?

这有什么可不懂得吗?
杞人忧天,懂吧?


OK,明白了。3Q版主~
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:telnet send命令怎么写다음 기사:websocket php