php网页怎么制作,PHP网站中保持登录状态

大多数网站在用户登录时会提供一个“记住我”或者“保持登录状态”的选项,只知道是用Cookie实现的,但是具体来说的工作流程是什么?因为要实现一个网站登录的东西,所以想从细节方面了解这个问题的朋友就一起来学习下吧。

16b5c722acb000b10b5b51f3856344df.png

先说说结论:

1.cookie和session都可以用来保持登录状态。

2.如果使用cookie,用于保存用户状态的cookie需要加密,并且可被识别,但不必须可以解密。这个意思就是说,加密后的存储了用户登录信息的cookie数据在服务端可被还原,即使不能还原也要可以用于识别和比对(即唯一),php的加密函数可以去网上找,一搜一大把。

3.如果使用session,在不考虑安全的情况下,可以简单的使用$_SESSION这个全局数组达到目的,但是如果需要更高的安全性,需要额外的参数进行安全性验证,可以是加密字符串也可以是某串数据的MD5指纹。

4.使用session可以保证登录数据的一致性,如果登录数据中有在登录时间内可能会发生变动的项目,但是依然需要用到额外的参数去提取原来的session数据。

5.cookie比起session会有个滞后性,这一点需要注意,有时候有益,有时候也不方便。

6.在完全理解session的工作机制后,可以尝试抛弃php本身的session机制,建立自定义session机制。

终极结论:

为了保证安全性,既然都需要加密cookie,那么,为什么不把用户登录数据都存储在cookie里呢?session还会浪费服务器端存储。

终极进阶结论:

当你学会使用内存数据库的时候,比如memcached或者redis之类的,cookie和它们结合才是绝佳的解决方案。

下面扯点别的:

说起状态维持这件事情,一直是http的痛处,因为http是无状态协议,要让无状态协议支持状态维持,于是产生了cookie,早期浏览器对cookie戒心甚大,于是勉为其难用一下GET参数也是无妨,现代浏览器都是默认开启cookie的,甚至大部分都已经支持了浏览器端存储(storage)以及少部分支持了浏览器端数据库,后两者仅是存储,在请求时并不会向服务器反馈数据。而session是建立在cookie或者其他从浏览器传回的数据之上的,脱离了cookie或者其他从浏览器传回的参数(比如GET参数)就是无源之水、无根之木。

有人说,甚至有不少人说,session比cookie安全,我觉得这是不恰当的看法。cookie和session具有同等的安全性,并不会因为cookie存储于客户端而session存储于服务端而使cookie的安全性低于session,可以这么说,cookie和session的安全性都取决于cookie或者前文提到的传回服务器的参数的安全性。

而且session也不仅仅是局限于php本身提供的session库,任何存储于服务器端的数据都有可能扮演session的角色,本质上session是一种特殊的数据库,只不过这个数据库只允许已被识别的唯一合法客户端去访问。

虽然我在上面一段文字中强调了唯一,但是识别过程并不可靠ÿ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值