【问题标题】:How to make session valid for a certain amount of hours如何使会话在一定时间内有效
【发布时间】:2017-11-27 07:34:24
【问题描述】:

所以在这个zend 1 应用程序中,当我转到起始页时,我可以看到有一个名为PHPSESSID 的cookie。 然后我登录(自定义登录),用户可以浏览受保护的页面。 但是如果他超过 30 分钟不活动,那么当请求一个受保护的页面时,应用程序会将他重定向到登录页面。

我关注的是PHPSESSID。最初设置为 30 分钟。我通过在似乎是对setcookie 的全球调用中添加“28800”来增加它。

当我重新加载页面时,我可以看到PHPSESSID 将在 8 小时后过期。 尽管如此,30 分钟后仍会退出使用。 因此,更改 cookie 过期时间并没有提供任何帮助。 下一步是什么?更改 php 会话持续时间? 当前的相关值为:

session.cache_expire: 180
session.gc_divisor: 1000
session.entropy_length:32
session.gc_maxlifetime: 14400
session.gc_probability:1
session.name: PHPSESSID

或者这与框架本身有关? Zend 中的某个地方可以调整会话的到期时间?

【问题讨论】:

  • 可能您在代码中的某处将 Zend_Session_Namespace 的“setExpirationSeconds”设置为 30 分钟。尝试找到它并更改为8小时。

标签: php session cookies zend-framework


【解决方案1】:

如果你使用的是zend,那么试试这个。

$auth = Zend_Auth::getInstance();

if ($auth->hasIdentity()) {
    $authns = new Zend_Session_Namespace($auth->getStorage()->getNamespace());
    $authns->setExpirationSeconds(60 * 30); //expire auth storage after 30 min
}

【讨论】:

    【解决方案2】:

    如果您有多个 php 站点将会话文件存储在同一个目录中 - php gc 进程可能有不同的会话设置。在这种情况下,将会话文件存储在另一个中,仅适用于您的站点、目录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-29
      • 2018-05-25
      • 2012-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-29
      • 1970-01-01
      相关资源
      最近更新 更多