PHP-防止用户注销
在这个网站上,我遇到了一个用户可能需要在很长一段时间内登录的情况(在某些情况下是几天、几周、甚至几个月)。问题是,我在服务器日志中看到,它们经常没有登录,因此尝试连接会导致重定向到登录页面 顺便说一句,这是每分钟自动连接的客户端 他们似乎是在某些情况下注销的(断电?计算机进入睡眠状态?其他网络中断?)。通常情况下,用户每分钟都与服务器建立一次连接,因此他们应该能够保持登录状态,是吗?我让一个连接运行了几天,并一直保持登录状态 我的相关会话设置是:PHP-防止用户注销,php,zend-framework,session,Php,Zend Framework,Session,在这个网站上,我遇到了一个用户可能需要在很长一段时间内登录的情况(在某些情况下是几天、几周、甚至几个月)。问题是,我在服务器日志中看到,它们经常没有登录,因此尝试连接会导致重定向到登录页面 顺便说一句,这是每分钟自动连接的客户端 他们似乎是在某些情况下注销的(断电?计算机进入睡眠状态?其他网络中断?)。通常情况下,用户每分钟都与服务器建立一次连接,因此他们应该能够保持登录状态,是吗?我让一个连接运行了几天,并一直保持登录状态 我的相关会话设置是: session.cache_expire
session.cache_expire 180
session.cookie_lifetime 0
session.gc_maxlifetime 1440
session.use_cookies On
session.use_only_cookies Off
登录状态的检查由Zend Framework的Zend_Auth
处理。对我来说,保持登录一天以上意味着我没有遇到缓存过期限制或gc最大生存期,对吗
我能模拟似乎正在发生的注销的唯一方法是建立连接(建立会话),然后让计算机在一夜之间离线。当我第二天再次联机时,客户端试图继续连接(它会自动连接),我发现我已注销
所以我的问题是
您的问题是
session.cookie\u liferate 0
这基本上意味着只有在客户端关闭浏览器之前,会话cookie才会处于活动状态。您可以将其设置为某个高值,例如一年
有关更多详细信息,请参阅。您的问题是
session.cookie\u life 0
这基本上意味着只有在客户端关闭浏览器之前,会话cookie才会处于活动状态。您可以将其设置为某个高值,例如一年
有关更多详细信息,请参阅。我认为您的评估听起来合理,但我怀疑注销是否与电网相关,可能与本地化防火墙、cookie设置或动态IP问题有关 您是否考虑过使用ajax在幕后不断更新会话时间?我已经多次成功地使用此方法: 这就是我发现这个想法的地方。这是对这个问题的简明处理 希望有帮助!
A我认为您的评估听起来很合理,但我怀疑注销是否与电网有关,可能更多地与本地化防火墙、cookie设置或动态IP问题有关 您是否考虑过使用ajax在幕后不断更新会话时间?我已经多次成功地使用此方法: 这就是我发现这个想法的地方。这是对这个问题的简明处理 希望有帮助!
A可能会删除一个表示用户已登录的cookie,并进行检查?看一看-这确实令人讨厌,但完成了工作:)可能会删除一个表示用户已登录的cookie,并进行检查?看一看-这确实令人讨厌,但完成了工作:)这听起来很有希望。顺便说一下,这些设置都是“默认”设置。我没有意识到默认情况是这样的。@gaoshan88确实,这应该是你的解决办法。基本上,你甚至没有在设置为零的情况下种植饼干。这只是一个浏览器会话。将其设置为60*60*24*30,并使其持续一个月(或更长)…@Shackrock当然会有一块饼干。在我的回答和PHP文档中都有正确的解释。@Basti过期的cookie不太像cookie=)生存期为0的cookie永远不会过期。当用户关闭浏览器时,它们会被删除。这听起来很有希望。顺便说一下,这些设置都是“默认”设置。我没有意识到默认情况是这样的。@gaoshan88确实,这应该是你的解决办法。基本上,你甚至没有在设置为零的情况下种植饼干。这只是一个浏览器会话。将其设置为60*60*24*30,并使其持续一个月(或更长)…@Shackrock当然会有一块饼干。在我的回答和PHP文档中都有正确的解释。@Basti过期的cookie不太像cookie=)生存期为0的cookie永远不会过期。当用户关闭浏览器时,它们将被删除。