首頁 > 後端開發 > php教程 > 用session登录的一些问题

用session登录的一些问题

WBOY
發布: 2016-06-23 13:53:49
原創
1020 人瀏覽過

这样的,我写了一个登录,用的是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版主~
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板