php如何;“保持登录”;复选框影响日志记录过程


php How does a "stay logged in" checkbox influence logging process?

我想知道当用户登录网站时,无论是否选中"保持登录"复选框,都会发生什么。据我所知,start_session在服务器上创建一个变量,并将客户端浏览器上的会话id存储在cookie中,在关闭所述浏览器时销毁。根据这个推理,我猜选中"保持登录"复选框会将到期日期推迟N秒,这可以通过设置:来实现

setcookie(session_name(), session_id(), time()+N);

在这种情况下,我认为没有必要使用cookie,至少在日志记录过程中是这样。我是对的还是大错特错?:)

有几种典型的方法可以处理"保持登录"框。。。

  • 你可以在一个持久的cookie中设置用户的信息,然后查找该cookie
  • 您可以创建一些唯一的ID(最好是一个大的ID……比如GUID或哈希),将其存储在持久cookie中,并将其用作身份验证信息

请注意,大多数解决方案并不涉及用户实际保持登录;它们只是让用户看不到另一个密码提示。从技术上讲,保持会话有效并将会话ID存储在持久cookie中是可能的,但对于一个有很多用户的网站来说,这将给服务器带来相当大的额外空间和负载。

我编写这样一个选项的方法是创建一个令牌,并将其与用户ID一起存储在数据库中。然后,我将该令牌作为cookie提供给浏览器。每当完成页面请求时,我首先检查用户是否有活动会话,然后检查他们是否有这个令牌cookie。如果他们有一个令牌cookie,我会查看数据库,看看它是否有效,如果有效,则使用该用户ID创建一个会话。

然而,我确信这是一种不安全、容易被破坏的方法。