如何保持用户登录,直到用户自己退出?

时间:2017-01-12 01:09:10

标签: php session cookies login

我有一个php登录页面,一旦登录成功,就会在会话中存储用户ID。用户可以导航到不同的页面,甚至可以短暂关闭页面,一旦用户重新打开页面,他仍然登录。但问题是,当用户关闭页面较长时间时,会话自动过期,他必须重新输入凭据并再次登录。

如果用户决定这样做,我怎样才能让用户永远登录并注销? 我希望用户能够关闭页面,关闭电脑几周,当他或她回来访问该页面时,他或她应该已经登录。

1 个答案:

答案 0 :(得分:1)

听起来您需要设置Cookie到期日期 - 根据HTTP上的this wikipedia article,如果您没有为Cookie设置过期日期,它就会成为会话Cookie。即,一旦浏览器关闭,它就会过期。

没有真正的方法来指定cookie永远不会过期,但是您可以在将来的某个时间设置到期日期...即10年,并在每次用户加载页面时更新该到期日期。

setCookie( name, value, expiration )

另一个替代方案(在您的页面上也需要一些JS)将使用浏览器的内部数据库来存储用户会话ID,以便您可以从数据库中检索会话(我假设您正在使用某种类型的数据库) ,否则你将遇到其他问题,如下所述。)

如果我想实现这一点,我可能会在我的页面加载上有一段javascript检查是否存在会话cookie,如果没有,我会从浏览器的数据库中加载会话ID,删除cookie,并强制页面重新加载。当然有更优雅的方法来实现这一目标,但这应该为您提供一个如何开始实现这一目标的示例。

最后,请记住,如果您不使用数据库(即Redis,Memcached,SQL),则重新启动应用程序服务器时会丢失所有会话信息。这当然不是最理想的,如果您希望在服务器重新启动后(或者如果您有负载平衡的环境)使这些信息存在,则应将会话信息存储在数据库中。

希望这有帮助!