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永远不会过期。当用户关闭浏览器时,它们将被删除。