"记住我"功能的最佳实践?

Ben*_*enM 9 php mysql session login

作为我正在开展的大型项目的一部分,我们希望在用户登录过程中集成"记住我"功能.首席开发人员的一个建议就是将他们的PHP session_id()存储在cookie中以及数据库中的记录中.当他们下次访问该站点时,从cookie中查找session_id并检索其凭据.

这对于基于一台计算机的用户来说非常有用,但是与用户可能从不同计算机访问该站点的云计算(它是一个Web应用程序)相悖,并且可能希望该选项能够记住他们所有的详细信息.例如,在一台计算机上设置其session_id,然后在另一台计算机上重新设置它意味着它们将从第一台计算机中注销.

我倾向于向团队建议我们创建一个具有以下结构的单独数据库表:

+----------------+----------------+------------------+--------------------+
|    user_id     |   session_id   |    ip_address    | initial_login_date |
+----------------+----------------+------------------+--------------------+
|       5        |  123456789101  |   192.168.0.1    |     1305194639     |
+----------------+----------------+------------------+--------------------+
|       5        |  021456789101  | 255.255.255.255  |     1305194639     |
+----------------+----------------+------------------+--------------------+
Run Code Online (Sandbox Code Playgroud)

然后我们需要做的就是在表中查找session_id,然后获取user_id.

有没有更好的方法来实现这一目标?

bas*_*eck 5

这篇文章给了我很多帮助


Wes*_*orp 2

我想我应该在 cookie 中存储一个唯一的标识符,并使用它代替 ip,因为它可能会发生变化。