Session 将php会话设置为持续1个月(或直到用户明确注销)

Session 将php会话设置为持续1个月(或直到用户明确注销),session,authentication,cookies,php,Session,Authentication,Cookies,Php,我有一个关于php会话的快速问题。如果我希望会话持续一个月(或直到用户明确注销),我将更改以下php.ini设置:session.gc_maxlife=2592000和session.cookie_life=2592000,其默认值分别为1440和0。对吗 谢谢。会话。cookie\u生存期为0将保留cookie,直到浏览器重新启动(基本上是整个会话) 将您的会话.gc_maxlife设置为如此高的值将意味着您的服务器上将有许多过时的会话,如果您有大量会话,这可能是一个问题-通常会话存储在系统的

我有一个关于php会话的快速问题。如果我希望会话持续一个月(或直到用户明确注销),我将更改以下php.ini设置:session.gc_maxlife=2592000和session.cookie_life=2592000,其默认值分别为1440和0。对吗


谢谢。

会话。cookie\u生存期为0将保留cookie,直到浏览器重新启动(基本上是整个会话)

将您的
会话.gc_maxlife
设置为如此高的值将意味着您的服务器上将有许多过时的会话,如果您有大量会话,这可能是一个问题-通常会话存储在系统的/tmp文件夹中。当此文件夹(通常在*nix机器上)填满时,可能会导致机器出现问题-进程开始锁定,因为无论出于何种原因,它们无法创建临时文件。(您可以将
会话.save_path
更改为/tmp以外的内容,这样您就不会出现此问题,尤其是在共享主机上)

不过,在服务器配置方面有更多经验的人可能知道,其他超时(如Apache和TCP设置)可能会超过此值,无论您创建的超时值有多高

我相信你基本上要求的是一个
记住我
功能,它允许用户登录,而无需记住用户名/密码和确切状态(1个月的会话)

记住我
功能可以通过旋转身份验证cookie实现,该cookie根据用户的登录凭据设置为已知系列中的下一个令牌


1个月的会话功能可以通过将会话状态存储在持久缓存(文件缓存、数据库、类似Toyko Tyrant的更精细的东西)中来实现。

会话。cookie\u生存期为0将保留cookie,直到浏览器重新启动(基本上是整个会话)

将您的
会话.gc_maxlife
设置为如此高的值将意味着您的服务器上将有许多过时的会话,如果您有大量会话,这可能是一个问题-通常会话存储在系统的/tmp文件夹中。当此文件夹(通常在*nix机器上)填满时,可能会导致机器出现问题-进程开始锁定,因为无论出于何种原因,它们无法创建临时文件。(您可以将
会话.save_path
更改为/tmp以外的内容,这样您就不会出现此问题,尤其是在共享主机上)

不过,在服务器配置方面有更多经验的人可能知道,其他超时(如Apache和TCP设置)可能会超过此值,无论您创建的超时值有多高

我相信你基本上要求的是一个
记住我
功能,它允许用户登录,而无需记住用户名/密码和确切状态(1个月的会话)

记住我
功能可以通过旋转身份验证cookie实现,该cookie根据用户的登录凭据设置为已知系列中的下一个令牌


1个月会话功能可以通过将会话状态存储在持久缓存(文件缓存、数据库、类似Toyko Tyrant的更精细的东西)中来实现。

如果您要求的是“记住我”,最简单的解决方案是:

一旦用户成功登录,您将创建一个随机哈希并将其存储在cookie(在用户浏览器上)和数据库(加入到用户ID中)中

因此,当用户首先调用您的脚本时,您会检查哈希值,如果哈希值存在于数据库中,则您会自动登录,而无需询问用户名/密码,否则您将询问用户名/密码

在第一个选项中,您“绕过”登录,因为哈希标识用户。 如果用户明确从您的站点注销,只需删除会话并重置用户哈希(在数据库端)

使用此方法,您还可以设置时间限制,在cookie中,只需设置cookie持续时间,在db端添加时间限制,如果用户使用时间限制上的哈希登录,则不允许身份验证登录:)


希望这能解决你的问题

如果你要求的是“记住我”,最简单的解决办法是:

一旦用户成功登录,您将创建一个随机哈希并将其存储在cookie(在用户浏览器上)和数据库(加入到用户ID中)中

因此,当用户首先调用您的脚本时,您会检查哈希值,如果哈希值存在于数据库中,则您会自动登录,而无需询问用户名/密码,否则您将询问用户名/密码

在第一个选项中,您“绕过”登录,因为哈希标识用户。 如果用户明确从您的站点注销,只需删除会话并重置用户哈希(在数据库端)

使用此方法,您还可以设置时间限制,在cookie中,只需设置cookie持续时间,在db端添加时间限制,如果用户使用时间限制上的哈希登录,则不允许身份验证登录:)


希望这能解决你的问题

我正在努力完成tumblr的工作。一旦你登录,你似乎无限期地登录,直到你真正注销为止,不管你是否关闭浏览器等等。如果你两周后回来,你实际上不会再次“登录”,你实际上会在登录状态下停留很长时间。他们只是使用一个复杂的文件系统设置一次处理这么多可能过时的会话吗?在问题开始出现之前,我大约可以有多少个过时的会话?我正在尝试完成tumblr所做的事情。一旦你登录,你似乎无限期地登录,直到你真正注销为止,不管你是否关闭浏览器等等。如果你两周后回来,你实际上不会再次“登录”,你实际上会在登录状态下停留很长时间。他们只是在用复杂的胶片吗