首页 / PHP学习笔记 / PHP功能模型 / PHP基于redis的登录状态验证:基于username+password+uniqid(前缀)生成动态cookie.

PHP基于redis的登录状态验证:基于username+password+uniqid(前缀)生成动态cookie.

PHP用户登录标识一般基于cookie和session来作为用户登录状态。对于刚开始接触web开发,经常使用username和userid存储到session来进行用户是否登录。但是session在某些情况会丢失,所以我选择使用动态cookie字符串来进行验证用户登录。

思路

我的思路是这样的。基于username+password+uniqid生成唯一的cookie字符串。然后使用hash md5 对字符串进行加密,把该字符串存储到cookie和redis。假设redis里的字符串过期时间为5分钟,基于本地的cookie字符串,如果redis存在相同的字符串,则证明用户已经登录。如果redis不存在,则重新进行登录验证。

我认为这样做的好处是:生成了一段动态的cookie在本地。这样对于伪造本地cookie的难度就大大增加,因为是动态的。

生成动态的Cookie

生成用户登录cookie。

$username = '我是一只猪猪';
$password = md5('123456');
$uniqid = uniqid('user_token',true);
$cookie = hash('md5',$username.$password.$uniqid);

在存储redis时可以使用该段cookie作为key,用户的$username,$password则做为value。使用php的序列化函数serialize和unrerialize函数序列化后储存。重新登录验证后,生成该段cookie,然后更换用户本地的cookie。反正是动态的,所以不用担心伪造cookie。

声明:转载请注明原文地址及作者姓名。 作者:Glary Joker 文章地址://glaryjoker.com/article/385.html
上一篇:已经是最后一篇了

评论

登录后评论.