无法找到这个问题的副本,所以这里是:
我有兴趣建立一个像亚马逊一样工作的PHP网站.我的意思是,当我去亚马逊时,我的会话总是"登录"但不是真的.该网站知道我是谁,我可以访问我保存的购物车数据和某些"不安全"的帐户操作,但每当我想做任何事情,比如查看我的订单,或者实际检查我必须仍然登录.
我在亚马逊的"未登录但有点登录"状态下看了一下饼干,我没有看到任何跳出来的东西,但我猜他们存储了某种标识符cookie,允许网站启动会话基于我的用户帐户,但处于"未经身份验证"模式,其中大多数事情都受到限制,但并非全部.
所以我想知道是否有人对我的想法有任何提示或陷阱:
1 - 用户帐户都有某种MD5,它是在创建/更新帐户时根据用户名和密码创建的.
2 - 每次对会话进行身份验证时,都会确保使用此md5哈希存储/ permanent/cookie.
3 - 如果访问者在没有活动会话数据的情况下加载页面,它会检查md5 cookie并将用户基本的"未经身份验证的"信息加载到与该md5匹配的会话中,以便现在该站点知道他们的名字和他们保存的购物车等等
(这是一个问题,有人可以尝试随机md5哈希试图加载不同的用户名/购物车,从而得到"登录电子邮件"地址?是否值得我的时间在md5检查上进行某种暴力检测?)
4 - 当处于未经身份验证状态的用户尝试执行需要身份验证的操作时,将显示登录页面,并预先填写电子邮件/帐户名称框.然后在成功登录后重定向到请求的操作.
(如果没有md5 cookie或者md5很糟糕,只需丢弃cookie并显示网站"无用户"模式.)
思考?关注?好主意?
为了做这样的事情,我建议你设置一个加密的cookie,你可以用它来阅读salt
.在盐渍/加密的cookie中,保存用户ID和登录日期,这样您就可以设置时间限制来检查它们之间的区别,并确定您是否允许它们访问insecure
网站的某些部分.
我真的觉得这是最有效的方式去做这样的事情.保存数据库中的其他所有内容,只需使用cookie保存的ID从数据库中获取信息(当然,在您解密cookie之后),获取您想要的其余数据(购物车等)
希望这可以帮助!